{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "74fd7911",
   "metadata": {},
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "import glob as gb\n",
    "import re\n",
    "import os\n",
    "from copy import deepcopy\n",
    "import warnings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ad45ee2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PosixPath('/Users/julien/Software/Others/OpenStudio')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ROOT_DIR = Path(\".\").absolute().parent.parent\n",
    "ROOT_DIR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cfa316fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "ROOT_DIR = Path(\"/Users/julien/Software/Others/OpenStudio\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "91c8926f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# cpp_files = gb.glob(str(ROOT_DIR / 'src' / '**' / '*.cpp'), recursive=True)\n",
    "cpp_files = list(ROOT_DIR.glob(\"src/**/*.cpp\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2cc09038",
   "metadata": {},
   "source": [
    "# Initialize vertices directly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7e49bba9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# cpp_files = [ '/Users/julien/Software/Others/OpenStudio/src/model/test/SubSurface_GTest.cpp',]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4a29808c",
   "metadata": {},
   "outputs": [],
   "source": [
    "RE_VERTICES = re.compile(r\"^(\\s*)(?:std::vector<Point3d>|Point3dVector) (\\w+);\")\n",
    "RE_VERTICES_CLEAR = re.compile(r\"^(\\s*)(\\w+).clear\\(\\);\")\n",
    "RE_PUSHBACK = re.compile(r\"\\w+.push_back\\(Point3d\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)\\)\\);\")\n",
    "RE_PUSHBACK = re.compile(r\"\\w+.push_back\\(Point3d\\(\\s*([^,]+),\\s*([^,]+),\\s*([^,]+)\\)\\);\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3e8f80c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "for cpp_file in cpp_files:\n",
    "    with open(cpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "    lines = content.splitlines()\n",
    "    done_lines = []\n",
    "    new_lines = []\n",
    "    anyDone = False\n",
    "    for i, line in enumerate(lines):\n",
    "        if i in done_lines:\n",
    "            continue\n",
    "        done_lines.append(i)\n",
    "        if (m11 := RE_VERTICES.search(line)) or (m12 := RE_VERTICES_CLEAR.search(line)):\n",
    "            if m11:\n",
    "                spacing = m11.groups()[0]\n",
    "            else:\n",
    "                spacing = m12.groups()[0]\n",
    "            print(i, line)\n",
    "            j = i + 1\n",
    "            pts = []\n",
    "            while m2 := RE_PUSHBACK.search(lines[j]):\n",
    "                anyDone = True\n",
    "                pts.append(m2.groups())\n",
    "                done_lines.append(j)\n",
    "                j += 1\n",
    "            if pts:\n",
    "                if m11:\n",
    "                    new_lines.append(line.replace(\";\", \" {\"))\n",
    "                else:\n",
    "                    new_lines.append(line.replace(\".clear();\", \" = {\"))\n",
    "                for k, pt in enumerate(pts):\n",
    "                    new_line = spacing + \"  {{{}, {}, {}}}\".format(*pt)\n",
    "                    # if k != (len(pts) - 1):\n",
    "                    new_line += \",\"\n",
    "                    new_lines.append(new_line)\n",
    "\n",
    "                new_lines.append(spacing + \"};\")\n",
    "            else:\n",
    "                for k in range(i, j):\n",
    "                    new_lines.append(lines[i])\n",
    "        else:\n",
    "            new_lines.append(line)\n",
    "\n",
    "    if anyDone:\n",
    "        with open(cpp_file, \"w\") as f:\n",
    "            f.write(\"\\n\".join(new_lines) + \"\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d19716a",
   "metadata": {},
   "source": [
    "# std::string by const ref"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1ab92714",
   "metadata": {},
   "outputs": [],
   "source": [
    "p_method_name = re.compile(r\"(\\s*)bool\\s+(.*?_Impl::)(set.*?)(\\(\\s*(std::string).*)\")\n",
    "\n",
    "all_dict = {}\n",
    "changed_dict = {}\n",
    "\n",
    "\n",
    "# Debug\n",
    "n_tot = 0\n",
    "\n",
    "for file in cpp_files:\n",
    "    # Check number of method changed for consistency between cpp / hpp/ Impl\n",
    "    # Stores the actual line of function names for checking\n",
    "    cpp_impl_methods = []\n",
    "\n",
    "    class_name = os.path.splitext(os.path.basename(file))[0]\n",
    "    with open(file, \"r\") as f:\n",
    "        ori_lines = f.read().splitlines()\n",
    "\n",
    "    lines = deepcopy(ori_lines)\n",
    "    # Might as well strip the trailing (right) whitespace too\n",
    "    lines = [x.rstrip() for x in lines]\n",
    "\n",
    "    found_lines = []\n",
    "    for i, line in enumerate(lines):\n",
    "        # Check that the method name is setXXX\n",
    "        m3 = p_method_name.match(lines[i])\n",
    "\n",
    "        if m3:\n",
    "            method_name = m3.groups()[2]\n",
    "            # print(i, m3.groups())\n",
    "            # Go until the end of the function\n",
    "            lines[i] = \"{}bool {}{}{}\".format(\n",
    "                m3.groups()[0],\n",
    "                m3.groups()[1],\n",
    "                m3.groups()[2],\n",
    "                m3.groups()[3].replace(\"std::string\", \"const std::string&\"),\n",
    "            )\n",
    "\n",
    "            found_lines.append(i)\n",
    "            cpp_impl_methods.append(line)\n",
    "            if not class_name in changed_dict.keys():\n",
    "                changed_dict[class_name] = [method_name]\n",
    "            else:\n",
    "                changed_dict[class_name].append(method_name)\n",
    "\n",
    "    if found_lines:\n",
    "        # Make the change to the Public implemention in the cpp file\n",
    "        cpp_public_methods = []\n",
    "        p_getimpl = re.compile(r\"(\\s*)(getImpl.*)\")\n",
    "\n",
    "        for method_name in changed_dict[class_name]:\n",
    "            p_public = re.compile(r\"(\\s*)bool\\s*({}::{}\\s*\\(\\s*(std::string).*)\".format(class_name, method_name))\n",
    "            for i, line in enumerate(lines):\n",
    "                m = p_public.match(line)\n",
    "                if m:\n",
    "                    found_lines.append(i)\n",
    "                    lines[i] = lines[i].replace(\"std::string\", \"const std::string&\")\n",
    "                    cpp_public_methods.append(line)\n",
    "\n",
    "        all_dict[file] = {\"ori\": ori_lines, \"new\": lines}\n",
    "        # print('{}: {}'.format(file, found_lines))\n",
    "        # if len(found_lines)%2 != 0:\n",
    "        #     print(\"Something probably went wrong\")\n",
    "\n",
    "        # Write the cpp file\n",
    "        with open(file, \"w\") as f:\n",
    "            f.write(\"\\n\".join(lines) + \"\\n\")\n",
    "\n",
    "        # Change it in the hpp files\n",
    "\n",
    "        file_hpp = os.path.join(base_dir, \"{}.hpp\".format(class_name))\n",
    "        file_impl_hpp = os.path.join(base_dir, \"{}_Impl.hpp\".format(class_name))\n",
    "\n",
    "        hpp_impl_methods = []\n",
    "        hpp_public_methods = []\n",
    "\n",
    "        for file_header in [file_hpp, file_impl_hpp]:\n",
    "            write_needed = False\n",
    "            with open(file_header, \"r\") as f:\n",
    "                lines = f.read().splitlines()\n",
    "            for method_name in changed_dict[class_name]:\n",
    "                p = re.compile(\"(\\s*)bool\\s*({}\\s*\\(\\s*(std::string).*)\".format(method_name))\n",
    "\n",
    "                # Might as well strip the trailing (right) whitespace too\n",
    "                lines = [x.rstrip() for x in lines]\n",
    "                is_found = False\n",
    "                for i, line in enumerate(lines):\n",
    "                    m = p.match(line)\n",
    "                    if m:\n",
    "                        is_found = True\n",
    "                        write_needed = True\n",
    "                        lines[i] = lines[i].replace(\"std::string\", \"const std::string&\")\n",
    "                        if file_header == file_hpp:\n",
    "                            hpp_public_methods.append(line)\n",
    "                        else:\n",
    "                            hpp_impl_methods.append(line)\n",
    "                        n_tot += 1\n",
    "                if not is_found:\n",
    "                    print(\"{}: {} not found\".format(file, method_name))\n",
    "\n",
    "            if write_needed:\n",
    "                with open(file_header, \"w\") as f:\n",
    "                    f.write(\"\\n\".join(lines) + \"\\n\")\n",
    "\n",
    "        if len(cpp_impl_methods) != len(hpp_impl_methods):\n",
    "            warnings.warn(\n",
    "                \"Not maching for {} in Impl: Cpp={}, Hpp=\" \"{}\".format(file, cpp_impl_methods, hpp_impl_methods)\n",
    "            )\n",
    "        if len(cpp_public_methods) != len(hpp_impl_methods):\n",
    "            warnings.warn(\n",
    "                \"Not maching for {} in Public: Cpp={}, Hpp=\" \"{}\".format(file, cpp_public_methods, hpp_impl_methods)\n",
    "            )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc79e014",
   "metadata": {},
   "source": [
    "# Destructors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7eb6e8ba",
   "metadata": {},
   "outputs": [],
   "source": [
    "impl_hpp_files = list(ROOT_DIR.glob(\"src/**/*_Impl.hpp\"))\n",
    "hpp_files = list(ROOT_DIR.glob(\"src/**/*.hpp\"))\n",
    "print(len(impl_hpp_files), len(hpp_files))\n",
    "hpp_files = list(set(hpp_files) - set(impl_hpp_files))\n",
    "print(len(impl_hpp_files), len(hpp_files))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0d143791",
   "metadata": {},
   "outputs": [],
   "source": [
    "re_destructors = re.compile(r\"~(\\w+)\\(\\)\")\n",
    "re_destructor_cpp_non_trivial = re.compile(r\"(\\w+)::~\\1()\\(\\)\\s*{\\s*(\\w+.*)\\s*}\")\n",
    "re_destructor_cpp_trivial = re.compile(r\"(\\w+)::~\\1()\\(\\)\\s*{\\s*}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5fe242d1",
   "metadata": {},
   "source": [
    "## Find non trivial destructors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b9d718e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "for cpp_file in cpp_files:\n",
    "    class_name = cpp_file.stem\n",
    "    with open(cpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "\n",
    "    for x in re_destructor_cpp_non_trivial.finditer(content):\n",
    "        print(f\"{cpp_file}: {x.groups()}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "706366ab",
   "metadata": {},
   "source": [
    "## Find trivial destructors defined in cpp file and move them to = default in hpp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "92022871",
   "metadata": {},
   "outputs": [],
   "source": [
    "re_destructor_cpp_trivial = re.compile(r\"^[\\t ]*(\\w+)::~\\1()\\(\\)\\s*{\\s*}\\s*?$[\\r\\n]\", re.MULTILINE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b97026ef",
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "for cpp_file in cpp_files:\n",
    "    # for cpp_file in [Path('/Users/julien/Software/Others/OpenStudio/src/airflow/contam/PrjAirflowElements.cpp')]:\n",
    "    class_name = cpp_file.stem\n",
    "    with open(cpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "    found_dtors = []\n",
    "    for x in re_destructor_cpp_trivial.finditer(content):\n",
    "        found_dtors.append(x.groups()[0])\n",
    "    if found_dtors:\n",
    "        # print(cpp_file, found_dtors)\n",
    "        with open(cpp_file, \"w\") as f:\n",
    "            f.write(re_destructor_cpp_trivial.sub(\"\", content))\n",
    "\n",
    "        hpp_file = cpp_file.with_suffix(\".hpp\")\n",
    "        impl_file = cpp_file.with_stem(cpp_file.stem + \"_Impl\").with_suffix(\".hpp\")\n",
    "        impl_dtors = [x for x in found_dtors if \"_Impl\" in x]\n",
    "        dtors = list(set(found_dtors) - set(impl_dtors))\n",
    "        if impl_dtors:\n",
    "            with open(impl_file, \"r\") as f:\n",
    "                content = f.read()\n",
    "            lines = content.splitlines()\n",
    "            new_lines = []\n",
    "            for i, line in enumerate(lines):\n",
    "                found = False\n",
    "                for dtor in impl_dtors:\n",
    "                    if f\"~{dtor}();\" in line:\n",
    "                        found = True\n",
    "                        new_lines.append(line.replace(\";\", \" = default;\"))\n",
    "                if not found:\n",
    "                    new_lines.append(line)\n",
    "            with open(impl_file, \"w\") as f:\n",
    "                f.write(\"\\n\".join(new_lines) + \"\\n\")\n",
    "\n",
    "        if dtors:\n",
    "            with open(hpp_file, \"r\") as f:\n",
    "                content = f.read()\n",
    "            lines = content.splitlines()\n",
    "            new_lines = []\n",
    "            for i, line in enumerate(lines):\n",
    "                found = False\n",
    "                for dtor in dtors:\n",
    "                    if f\"~{dtor}();\" in line:\n",
    "                        found = True\n",
    "                        new_lines.append(line.replace(\";\", \" = default;\"))\n",
    "                if not found:\n",
    "                    new_lines.append(line)\n",
    "            with open(hpp_file, \"w\") as f:\n",
    "                f.write(\"\\n\".join(new_lines) + \"\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89e9559c",
   "metadata": {},
   "source": [
    "## Replace all trivial dtors in hpp/Impl.hpp files by = default"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3c842ca7",
   "metadata": {},
   "outputs": [],
   "source": [
    "hpp_files = list(ROOT_DIR.glob(\"src/**/*.hpp\"))\n",
    "re_destructor_hpp_trivial = re.compile(r\"^([\\t ]*(?:virtual *)?~\\w+\\(\\))(\\s*?{\\s*?}\\s*?;*)(.*?)$\", re.MULTILINE)\n",
    "\n",
    "for hpp_file in hpp_files:\n",
    "    with open(hpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "\n",
    "    found_dtors = []\n",
    "    for x in re_destructor_hpp_trivial.finditer(content):\n",
    "        # print(x.groups())\n",
    "        found_dtors.append(x.groups()[1])\n",
    "    if found_dtors:\n",
    "        # print(hpp_file, found_dtors)\n",
    "        with open(hpp_file, \"w\") as f:\n",
    "            f.write(re_destructor_hpp_trivial.sub(r\"\\1 = default;\\3\", content))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a947b76",
   "metadata": {},
   "source": [
    "# Move in clone"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f3c6203d",
   "metadata": {},
   "outputs": [],
   "source": [
    "cpp_model_files = list(ROOT_DIR.glob(\"src/model/*.cpp\"))\n",
    "\n",
    "re_normal_return = re.compile(r\"^(\\s*)return\\s*(\\w+);(.*)$\")\n",
    "\n",
    "re_init_return = re.compile(r\"(\\w+)\\s+\" + class_name + r\"\\s+=\\s+(\\w+)::clone\\(model\\)(?:.cast<(\\w+)>\\(\\);)\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0627244a",
   "metadata": {},
   "outputs": [],
   "source": [
    "for cpp_file in cpp_model_files:\n",
    "    # for cpp_file in [Path('/Users/julien/Software/Others/OpenStudio/src/model/AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.cpp')]:\n",
    "\n",
    "    class_name = cpp_file.stem\n",
    "    with open(cpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "    if not f\"{class_name}_Impl::clone(Model model)\" in content:\n",
    "        # print(f'{class_name} has no clone override')\n",
    "        continue\n",
    "\n",
    "    lines = content.splitlines()\n",
    "\n",
    "    i = 0\n",
    "    while f\"{class_name}_Impl::clone(Model model)\" not in lines[i]:\n",
    "        i += 1\n",
    "\n",
    "    k = i + 1\n",
    "    while \"return \" not in lines[k]:\n",
    "        k += 1\n",
    "\n",
    "    # print(i, k)\n",
    "    # print(lines[k+1])\n",
    "\n",
    "    if m := re_normal_return.search(lines[k]):\n",
    "        return_init_space, return_var, trailing_chars = m.groups()\n",
    "        # print(return_var)\n",
    "        found = False\n",
    "        # re_init_return = re.compile(r'^(\\s*)(\\w+)\\s+(' + return_var + r')\\s+=\\s+(\\w+::clone\\(model\\))(.cast<(\\w+)>\\(\\);.*)$')\n",
    "        re_init_return = re.compile(\n",
    "            r\"^(\\s*)(\\w+)\\s+(\" + return_var + r\")\\s+=\\s+(\\w+::clone\\(model\\))(.optionalCast<(\\w+)>\\(\\).get();.*)$\"\n",
    "        )\n",
    "\n",
    "        for j in range(i, k):\n",
    "            if m := re_init_return.match(lines[j]):\n",
    "                found = True\n",
    "                initial_space, vartype, varname, clone_method, cast_method, cast_type = m.groups()\n",
    "                # print(m.groups())\n",
    "                if cast_type != \"ModelObject\":\n",
    "                    lines[j] = f\"{initial_space}auto {varname} = {clone_method}{cast_method}\"\n",
    "                    lines[k] = f\"{return_init_space}return std::move({return_var});{trailing_chars}\"\n",
    "                    print(lines[j])\n",
    "                    print(lines[k])\n",
    "                    # with open(cpp_file, 'w') as f:\n",
    "                    #    f.write('\\n'.join(lines) + '\\n')\n",
    "        if not found:\n",
    "            re_init_return = re.compile(\n",
    "                r\"^(\\s*)(\\w+)\\s+(\" + return_var + r\")\\s+=\\s+(\\w+::clone\\(model\\))(.cast<(\\w+)>\\(\\);.*)$\", re.MULTILINE\n",
    "            )\n",
    "\n",
    "            if m := re_init_return.search(\"\\n\".join(lines[i : k + 1])):\n",
    "                print(m.groups())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "dd76f503",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 're_normal_return' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/var/folders/bz/sgrc10ls2d9fz7418xw3wgym0000gn/T/ipykernel_76519/476993546.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     23\u001b[0m     \u001b[0;31m#print(lines[k+1])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     24\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m     \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mm\u001b[0m \u001b[0;34m:=\u001b[0m \u001b[0mre_normal_return\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlines\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     26\u001b[0m         \u001b[0mreturn_init_space\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_var\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrailing_chars\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroups\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     27\u001b[0m         \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcpp_file\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 're_normal_return' is not defined"
     ]
    }
   ],
   "source": [
    "for cpp_file in cpp_model_files:\n",
    "    # for cpp_file in [Path('/Users/julien/Software/Others/OpenStudio/src/model/AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.cpp')]:\n",
    "\n",
    "    class_name = cpp_file.stem\n",
    "    with open(cpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "    if not f\"{class_name}_Impl::clone(Model model)\" in content:\n",
    "        # print(f'{class_name} has no clone override')\n",
    "        continue\n",
    "\n",
    "    lines = content.splitlines()\n",
    "\n",
    "    i = 0\n",
    "    while f\"{class_name}_Impl::clone(Model model)\" not in lines[i]:\n",
    "        i += 1\n",
    "\n",
    "    k = i + 1\n",
    "    while \"return \" not in lines[k]:\n",
    "        k += 1\n",
    "\n",
    "    # print(i, k)\n",
    "    # print(lines[k+1])\n",
    "\n",
    "    if m := re_normal_return.search(lines[k]):\n",
    "        return_init_space, return_var, trailing_chars = m.groups()\n",
    "        print(cpp_file, lines[k])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48bb55cb",
   "metadata": {},
   "source": [
    "# Avoid useless cast in clone"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4a5d976c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "2ce6b34c",
   "metadata": {},
   "source": [
    "# Remove virtual = default() in model"
   ]
  },
  {
   "cell_type": "raw",
   "id": "cb09ff24",
   "metadata": {},
   "source": [
    "model_hpp_files = list(ROOT_DIR.glob('src/**/*.hpp'))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "1aba13f2",
   "metadata": {},
   "source": [
    "re_destructor_hpp_trivial = re.compile(r'^([\\t ]*)((?:virtual *)?~\\w+\\(\\)\\s*=\\s*default;*.*?)$', re.MULTILINE)\n",
    "for hpp_file in model_hpp_files:\n",
    "    with open(hpp_file, 'r') as f:\n",
    "        content = f.read()\n",
    "\n",
    "    found_dtors = []\n",
    "    for x in re_destructor_hpp_trivial.finditer(content):\n",
    "        #print(x.groups())\n",
    "        found_dtors.append(x.groups())\n",
    "    if found_dtors:\n",
    "        #print(hpp_file, found_dtors)\n",
    "        with open(hpp_file, 'w') as f:\n",
    "            f.write(re_destructor_hpp_trivial.sub(r'\\1 // \\2', content))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f5be7bbf",
   "metadata": {},
   "source": [
    "# Add copy and move operators in model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ba467de9",
   "metadata": {},
   "outputs": [],
   "source": [
    "model_impl_hpp_files = list(ROOT_DIR.glob(\"src/**/*_Impl.hpp\"))\n",
    "model_hpp_files = list(ROOT_DIR.glob(\"src/model/*.hpp\"))\n",
    "print(len(model_impl_hpp_files), len(model_hpp_files))\n",
    "model_hpp_files = list(set(model_hpp_files) - set(model_impl_hpp_files))\n",
    "print(len(model_impl_hpp_files), len(model_hpp_files))\n",
    "\n",
    "\n",
    "re_destructor_hpp_trivial = re.compile(r\"^([\\t ]*)((?:virtual *)?~(\\w+)\\(\\)\\s*=\\s*default;*.*?)$\", re.MULTILINE)\n",
    "for hpp_file in model_hpp_files:\n",
    "    with open(hpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "\n",
    "    lines = content.splitlines()\n",
    "    new_lines = []\n",
    "    for line in lines:\n",
    "        if m := re_destructor_hpp_trivial.match(line):\n",
    "            init_space, dtor_signature, class_name = m.groups()\n",
    "            new_lines.append(line)\n",
    "            new_lines.append(f\"{init_space}// Default the copy and move operators because the virtual dtor is explicit\")\n",
    "            new_lines.append(f\"{init_space}{class_name}(const {class_name}& other) = default;\")\n",
    "            new_lines.append(f\"{init_space}{class_name}({class_name}&& other) = default;\")\n",
    "            new_lines.append(f\"{init_space}{class_name}& operator=(const {class_name}&) = default;\")\n",
    "            new_lines.append(f\"{init_space}{class_name}& operator=({class_name}&&) = default;\")\n",
    "\n",
    "        else:\n",
    "            new_lines.append(line)\n",
    "\n",
    "    with open(hpp_file, \"w\") as f:\n",
    "        f.write(\"\\n\".join(new_lines) + \"\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77026052",
   "metadata": {},
   "source": [
    "# Replace all getModelObjects<T> to getConcreteModelObjects<T> for all ConcreteClasses"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "988aef9e",
   "metadata": {},
   "outputs": [],
   "source": [
    "concrete_modelobject_file = ROOT_DIR / \"src/model/ConcreteModelObjects.hpp\"\n",
    "with open(concrete_modelobject_file, \"r\") as f:\n",
    "    content = f.read()\n",
    "lines = content.splitlines()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "5fb0a965",
   "metadata": {},
   "outputs": [],
   "source": [
    "concrete_classes = []\n",
    "concrete_impl_classes = []  # for QA/QC\n",
    "for line in lines:\n",
    "    line = line.split(\"//\")[0].strip()\n",
    "    if \"#include\" in line:\n",
    "        c = line.split('\"')[1].replace(\".hpp\", \"\")\n",
    "        if \"_Impl\" in c:\n",
    "            concrete_impl_classes.append(c.replace(\"_Impl\", \"\"))\n",
    "        else:\n",
    "            concrete_classes.append(c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "30ba4737",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(507, 507, 507, 507)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(concrete_classes), len(concrete_impl_classes), len(set(concrete_classes)), len(set(concrete_impl_classes))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "9d200a19",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "set()"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(concrete_classes) - set(concrete_impl_classes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "4490e359",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "set()"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(concrete_impl_classes) - set(concrete_classes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "f6c6cca4",
   "metadata": {},
   "outputs": [],
   "source": [
    "lookfors = [\"getModelObjects<\", \"getModelObjectsByName<\", \"getModelObjectByName<\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "bdd7df5b",
   "metadata": {},
   "outputs": [],
   "source": [
    "re_getobject_call = re.compile(r\"(getModelObjects|getModelObjectsByName|getModelObjectByName)<(.*?)>\")\n",
    "line = \"    std::vector<model::ConstructionBase> constructionBases = model.getModelObjects<model::ConstructionBase>();\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "71922352",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<re.Match object; span=(67, 107), match='getModelObjects<model::ConstructionBase>'>"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "re_getobject_call.search(line)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "62fc6a33",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "src/gbxml/ForwardTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/gbxml/MapSchedules.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "61 getModelObjectByName ScheduleTypeLimits\n",
      "src/gbxml/Test/ForwardTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "93 getModelObjects Surface\n",
      "117 getModelObjectByName Surface\n",
      "188 getModelObjectByName Surface\n",
      "276 getModelObjectByName Surface\n",
      "278 getModelObjectByName Space\n",
      "280 getModelObjectByName ThermalZone\n",
      "285 getModelObjectByName StandardOpaqueMaterial\n",
      "src/gbxml/Test/ReverseTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "114 getModelObjectByName Surface\n",
      "115 getModelObjectByName Surface\n",
      "141 getModelObjectByName Surface\n",
      "150 getModelObjects Surface\n",
      "156 getModelObjectByName Surface\n",
      "190 getModelObjectByName SubSurface\n",
      "202 getModelObjects SubSurface\n",
      "222 getModelObjectByName Surface\n",
      "226 getModelObjectByName Surface\n",
      "230 getModelObjectByName Surface\n",
      "234 getModelObjectByName Surface\n",
      "238 getModelObjectByName Surface\n",
      "242 getModelObjectByName Surface\n",
      "246 getModelObjectByName Surface\n",
      "250 getModelObjectByName Surface\n",
      "256 getModelObjects Surface\n",
      "326 getModelObjects Surface\n",
      "328 getModelObjectByName Surface\n",
      "334 getModelObjectByName StandardOpaqueMaterial\n",
      "341 getModelObjectByName StandardOpaqueMaterial\n",
      "348 getModelObjectByName StandardOpaqueMaterial\n",
      "501 getModelObjectByName Surface\n",
      "510 getModelObjectByName Surface\n",
      "537 getModelObjectByName Surface\n",
      "548 getModelObjectByName Surface\n",
      "559 getModelObjectByName Surface\n",
      "570 getModelObjectByName Surface\n",
      "581 getModelObjectByName Surface\n",
      "592 getModelObjectByName Surface\n",
      "src/osversion/VersionTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/osversion/test/VersionTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "409 getModelObjects Construction\n",
      "src/airflow/Test/DemoModel.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "149 getModelObjects ThermostatSetpointDualSetpoint\n",
      "194 getModelObjects SetpointManagerSingleZoneReheat\n",
      "src/model/FanComponentModel.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/Site.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "160 getModelObjects LightingDesignDay\n",
      "src/model/FanOnOff.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/AirLoopHVACReturnPlenum.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/Building.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "163 getModelObjects Building\n",
      "src/model/ScheduleTypeRegistry.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/ThreeJSForwardTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/PortList.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "76 getModelObjects ThermalZone\n",
      "src/model/ConstructionBase.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/Model.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/ZoneHVACComponent.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "109 getModelObjects Connection\n",
      "110 getModelObjects AirLoopHVACReturnPlenum\n",
      "src/model/AirLoopHVAC.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/SimulationControl.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/FanSystemModel.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/YearDescription.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "318 getModelObjects ScheduleRule\n",
      "src/model/test/FanSystemModel_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "512 getModelObjects CurveExponent\n",
      "514 getModelObjects FanSystemModel\n",
      "518 getModelObjects FanSystemModel\n",
      "520 getModelObjects CurveExponent\n",
      "541 getModelObjects FanSystemModel\n",
      "542 getModelObjects CurveExponent\n",
      "543 getModelObjects FanSystemModel\n",
      "544 getModelObjects CurveExponent\n",
      "547 getModelObjects FanSystemModel\n",
      "548 getModelObjects CurveExponent\n",
      "549 getModelObjects FanSystemModel\n",
      "550 getModelObjects CurveExponent\n",
      "552 getModelObjects CurveExponent\n",
      "555 getModelObjects CurveExponent\n",
      "src/model/test/ModelObjectList_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "61 getModelObjects ModelObjectList\n",
      "64 getModelObjects Connection\n",
      "69 getModelObjects ModelObjectList\n",
      "72 getModelObjects Connection\n",
      "87 getModelObjects Connection\n",
      "108 getModelObjects Connection\n",
      "109 getModelObjects Connection\n",
      "147 getModelObjects Connection\n",
      "155 getModelObjects Connection\n",
      "171 getModelObjects Connection\n",
      "src/model/test/CoilCoolingDXTwoStageWithHumidityControlMode_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "66 getModelObjects CoilPerformanceDXCooling\n",
      "75 getModelObjects CoilPerformanceDXCooling\n",
      "92 getModelObjects CoilPerformanceDXCooling\n",
      "src/model/test/Model_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "244 getModelObjects AirLoopHVAC\n",
      "431 getModelObjects ThermalZone\n",
      "432 getModelObjects BuildingStory\n",
      "433 getModelObjects SpaceType\n",
      "434 getModelObjects DefaultConstructionSet\n",
      "435 getModelObjects DefaultScheduleSet\n",
      "436 getModelObjects Space\n",
      "479 getModelObjects ThermalZone\n",
      "723 getModelObjects Space\n",
      "src/model/test/SpaceType_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "279 getModelObjects SpaceType\n",
      "280 getModelObjects People\n",
      "283 getModelObjects PeopleDefinition\n",
      "284 getModelObjects ScheduleRuleset\n",
      "290 getModelObjects SpaceType\n",
      "300 getModelObjects SpaceType\n",
      "301 getModelObjects People\n",
      "304 getModelObjects PeopleDefinition\n",
      "305 getModelObjects ScheduleRuleset\n",
      "src/model/test/ZoneMixing_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "191 getModelObjects ZoneMixing\n",
      "193 getModelObjects ZoneMixing\n",
      "202 getModelObjects ZoneMixing\n",
      "204 getModelObjects ZoneMixing\n",
      "src/model/test/SubSurface_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "73 getModelObjects SubSurface\n",
      "76 getModelObjects SubSurface\n",
      "93 getModelObjects SubSurface\n",
      "803 getModelObjects Surface\n",
      "1010 getModelObjects Space\n",
      "1017 getModelObjects Space\n",
      "1024 getModelObjects Space\n",
      "1031 getModelObjects Space\n",
      "src/model/test/SetpointManagerMultiZoneHumidityMinimum_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "78 getModelObjects SetpointManagerMultiZoneHumidityMinimum\n",
      "88 getModelObjects SetpointManagerMultiZoneHumidityMinimum\n",
      "105 getModelObjects SetpointManagerMultiZoneHumidityMinimum\n",
      "112 getModelObjects SetpointManagerMultiZoneHumidityMinimum\n",
      "src/model/test/CoilWaterHeatingAirToWaterHeatPumpVariableSpeed_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/EnergyManagementSystemSensor_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "178 getModelObjects EnergyManagementSystemSensor\n",
      "197 getModelObjects EnergyManagementSystemSensor\n",
      "199 getModelObjects AvailabilityManagerHighTemperatureTurnOff\n",
      "204 getModelObjects AvailabilityManagerHighTemperatureTurnOff\n",
      "src/model/test/DaylightingControl_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "68 getModelObjects DaylightingControl\n",
      "70 getModelObjects DaylightingControl\n",
      "src/model/test/SetpointManagerMultiZoneCoolingAverage_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "76 getModelObjects SetpointManagerMultiZoneCoolingAverage\n",
      "86 getModelObjects SetpointManagerMultiZoneCoolingAverage\n",
      "103 getModelObjects SetpointManagerMultiZoneCoolingAverage\n",
      "110 getModelObjects SetpointManagerMultiZoneCoolingAverage\n",
      "src/model/test/RefrigerationSystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "91 getModelObjects RefrigerationSystem\n",
      "94 getModelObjects ModelObjectList\n",
      "97 getModelObjects RefrigerationCondenserAirCooled\n",
      "100 getModelObjects RefrigerationSubcoolerMechanical\n",
      "104 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "109 getModelObjects RefrigerationSystem\n",
      "112 getModelObjects ModelObjectList\n",
      "115 getModelObjects RefrigerationCondenserAirCooled\n",
      "118 getModelObjects RefrigerationSubcoolerMechanical\n",
      "121 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "281 getModelObjects RefrigerationSubcoolerMechanical\n",
      "287 getModelObjects RefrigerationSubcoolerMechanical\n",
      "293 getModelObjects RefrigerationSubcoolerMechanical\n",
      "304 getModelObjects RefrigerationSubcoolerMechanical\n",
      "317 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "323 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "329 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "340 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "378 getModelObjects RefrigerationCompressor\n",
      "386 getModelObjects RefrigerationCompressor\n",
      "407 getModelObjects RefrigerationCompressor\n",
      "469 getModelObjects RefrigerationCompressor\n",
      "477 getModelObjects RefrigerationCompressor\n",
      "500 getModelObjects RefrigerationCompressor\n",
      "572 getModelObjects RefrigerationCase\n",
      "580 getModelObjects RefrigerationCase\n",
      "605 getModelObjects RefrigerationCase\n",
      "679 getModelObjects RefrigerationAirChiller\n",
      "687 getModelObjects RefrigerationAirChiller\n",
      "712 getModelObjects RefrigerationAirChiller\n",
      "786 getModelObjects RefrigerationWalkIn\n",
      "794 getModelObjects RefrigerationWalkIn\n",
      "813 getModelObjects RefrigerationWalkIn\n",
      "885 getModelObjects RefrigerationWalkIn\n",
      "896 getModelObjects RefrigerationCase\n",
      "908 getModelObjects RefrigerationWalkIn\n",
      "914 getModelObjects RefrigerationCase\n",
      "948 getModelObjects RefrigerationWalkIn\n",
      "950 getModelObjects RefrigerationCase\n",
      "1010 getModelObjects RefrigerationSecondarySystem\n",
      "1018 getModelObjects RefrigerationSecondarySystem\n",
      "1041 getModelObjects RefrigerationSecondarySystem\n",
      "1110 getModelObjects RefrigerationCondenserCascade\n",
      "1118 getModelObjects RefrigerationCondenserCascade\n",
      "1141 getModelObjects RefrigerationCondenserCascade\n",
      "1206 getModelObjects RefrigerationSecondarySystem\n",
      "1217 getModelObjects RefrigerationCondenserCascade\n",
      "1229 getModelObjects RefrigerationSecondarySystem\n",
      "1235 getModelObjects RefrigerationCondenserCascade\n",
      "1266 getModelObjects RefrigerationCondenserCascade\n",
      "1268 getModelObjects RefrigerationSecondarySystem\n",
      "1401 getModelObjects RefrigerationCase\n",
      "1404 getModelObjects RefrigerationCase\n",
      "1408 getModelObjects RefrigerationCase\n",
      "1414 getModelObjects RefrigerationCase\n",
      "1425 getModelObjects RefrigerationWalkIn\n",
      "1428 getModelObjects RefrigerationWalkIn\n",
      "1432 getModelObjects RefrigerationWalkIn\n",
      "1438 getModelObjects RefrigerationWalkIn\n",
      "1448 getModelObjects RefrigerationCompressor\n",
      "1451 getModelObjects RefrigerationCompressor\n",
      "1456 getModelObjects RefrigerationCompressor\n",
      "1463 getModelObjects RefrigerationCompressor\n",
      "1470 getModelObjects RefrigerationCompressor\n",
      "1480 getModelObjects RefrigerationSecondarySystem\n",
      "1483 getModelObjects RefrigerationSecondarySystem\n",
      "1487 getModelObjects RefrigerationSecondarySystem\n",
      "1493 getModelObjects RefrigerationSecondarySystem\n",
      "1503 getModelObjects RefrigerationCondenserCascade\n",
      "1506 getModelObjects RefrigerationCondenserCascade\n",
      "1510 getModelObjects RefrigerationCondenserCascade\n",
      "1516 getModelObjects RefrigerationCondenserCascade\n",
      "1527 getModelObjects RefrigerationAirChiller\n",
      "1530 getModelObjects RefrigerationAirChiller\n",
      "1534 getModelObjects RefrigerationAirChiller\n",
      "1540 getModelObjects RefrigerationAirChiller\n",
      "1553 getModelObjects RefrigerationCondenserAirCooled\n",
      "1561 getModelObjects RefrigerationCondenserAirCooled\n",
      "1570 getModelObjects RefrigerationCondenserAirCooled\n",
      "1573 getModelObjects RefrigerationCondenserAirCooled\n",
      "1582 getModelObjects RefrigerationCondenserWaterCooled\n",
      "1590 getModelObjects RefrigerationCondenserWaterCooled\n",
      "1599 getModelObjects RefrigerationCondenserWaterCooled\n",
      "1602 getModelObjects RefrigerationCondenserWaterCooled\n",
      "1611 getModelObjects RefrigerationCondenserEvaporativeCooled\n",
      "1619 getModelObjects RefrigerationCondenserEvaporativeCooled\n",
      "1628 getModelObjects RefrigerationCondenserEvaporativeCooled\n",
      "1631 getModelObjects RefrigerationCondenserEvaporativeCooled\n",
      "1641 getModelObjects RefrigerationCondenserCascade\n",
      "1650 getModelObjects RefrigerationCondenserCascade\n",
      "1660 getModelObjects RefrigerationCondenserCascade\n",
      "1663 getModelObjects RefrigerationCondenserCascade\n",
      "1677 getModelObjects RefrigerationSubcoolerMechanical\n",
      "1685 getModelObjects RefrigerationSubcoolerMechanical\n",
      "1694 getModelObjects RefrigerationSubcoolerMechanical\n",
      "1697 getModelObjects RefrigerationSubcoolerMechanical\n",
      "1706 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "1714 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "1723 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "1726 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "src/model/test/SetpointManagerFollowGroundTemperature_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "84 getModelObjects SetpointManagerFollowGroundTemperature\n",
      "94 getModelObjects SetpointManagerFollowGroundTemperature\n",
      "111 getModelObjects SetpointManagerFollowGroundTemperature\n",
      "118 getModelObjects SetpointManagerFollowGroundTemperature\n",
      "src/model/test/GeneratorWindTurbine_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "171 getModelObjects GeneratorWindTurbine\n",
      "175 getModelObjects GeneratorWindTurbine\n",
      "179 getModelObjects GeneratorWindTurbine\n",
      "209 getModelObjects ElectricLoadCenterDistribution\n",
      "218 getModelObjects ElectricLoadCenterDistribution\n",
      "src/model/test/SetpointManagerScheduledDualSetpoint_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "85 getModelObjects SetpointManagerScheduledDualSetpoint\n",
      "94 getModelObjects SetpointManagerScheduledDualSetpoint\n",
      "114 getModelObjects SetpointManagerScheduledDualSetpoint\n",
      "121 getModelObjects SetpointManagerScheduledDualSetpoint\n",
      "src/model/test/SetpointManagerOutdoorAirPretreat_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "149 getModelObjects SetpointManagerOutdoorAirPretreat\n",
      "159 getModelObjects SetpointManagerOutdoorAirPretreat\n",
      "175 getModelObjects SetpointManagerOutdoorAirPretreat\n",
      "182 getModelObjects SetpointManagerOutdoorAirPretreat\n",
      "src/model/test/ExteriorWaterEquipment_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "122 getModelObjects ExteriorWaterEquipment\n",
      "123 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "128 getModelObjects ExteriorWaterEquipment\n",
      "129 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "142 getModelObjects ExteriorWaterEquipment\n",
      "143 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "148 getModelObjects ExteriorWaterEquipment\n",
      "149 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "164 getModelObjects ExteriorWaterEquipment\n",
      "165 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "171 getModelObjects ExteriorWaterEquipment\n",
      "172 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "185 getModelObjects ExteriorWaterEquipment\n",
      "186 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "192 getModelObjects ExteriorWaterEquipment\n",
      "193 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "src/model/test/CoilCoolingDXMultiSpeed_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/ZoneHVACLowTempRadiantVarFlow_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "223 getModelObjects ThermalZone\n",
      "266 getModelObjects DefaultConstructionSet\n",
      "270 getModelObjects ThermalZone\n",
      "src/model/test/CurveBicubic_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "196 getModelObjects CurveBicubic\n",
      "199 getModelObjects CurveBicubic\n",
      "203 getModelObjects RefrigerationCompressor\n",
      "204 getModelObjects CurveBicubic\n",
      "208 getModelObjects RefrigerationCompressor\n",
      "209 getModelObjects CurveBicubic\n",
      "215 getModelObjects RefrigerationCompressor\n",
      "216 getModelObjects CurveBicubic\n",
      "220 getModelObjects RefrigerationCompressor\n",
      "221 getModelObjects CurveBicubic\n",
      "225 getModelObjects RefrigerationCompressor\n",
      "226 getModelObjects CurveBicubic\n",
      "src/model/test/Node_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "140 getModelObjects Node\n",
      "150 getModelObjects Node\n",
      "163 getModelObjects SetpointManagerSingleZoneReheat\n",
      "178 getModelObjects SetpointManagerSingleZoneReheat\n",
      "189 getModelObjects SetpointManagerSingleZoneReheat\n",
      "207 getModelObjects SetpointManagerMixedAir\n",
      "226 getModelObjects SetpointManagerMixedAir\n",
      "237 getModelObjects SetpointManagerMixedAir\n",
      "250 getModelObjects SetpointManagerScheduled\n",
      "260 getModelObjects SetpointManagerScheduled\n",
      "271 getModelObjects SetpointManagerScheduled\n",
      "283 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "293 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "304 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "315 getModelObjects SetpointManagerOutdoorAirReset\n",
      "325 getModelObjects SetpointManagerOutdoorAirReset\n",
      "336 getModelObjects SetpointManagerOutdoorAirReset\n",
      "347 getModelObjects SetpointManagerWarmest\n",
      "357 getModelObjects SetpointManagerWarmest\n",
      "368 getModelObjects SetpointManagerWarmest\n",
      "src/model/test/SetpointManagerWarmest_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "76 getModelObjects SetpointManagerWarmest\n",
      "86 getModelObjects SetpointManagerWarmest\n",
      "102 getModelObjects SetpointManagerWarmest\n",
      "109 getModelObjects SetpointManagerWarmest\n",
      "src/model/test/RefrigerationAirChiller_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "62 getModelObjects RefrigerationAirChiller\n",
      "67 getModelObjects RefrigerationAirChiller\n",
      "src/model/test/ModelObject_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "116 getModelObjects StandardsInformationConstruction\n",
      "src/model/test/SetpointManagerMultiZoneHumidityMaximum_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "78 getModelObjects SetpointManagerMultiZoneHumidityMaximum\n",
      "88 getModelObjects SetpointManagerMultiZoneHumidityMaximum\n",
      "105 getModelObjects SetpointManagerMultiZoneHumidityMaximum\n",
      "112 getModelObjects SetpointManagerMultiZoneHumidityMaximum\n",
      "src/model/test/CoilHeatingDesuperheater_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "69 getModelObjects CoilHeatingDesuperheater\n",
      "72 getModelObjects RefrigerationCondenserAirCooled\n",
      "77 getModelObjects CoilHeatingDesuperheater\n",
      "80 getModelObjects RefrigerationCondenserAirCooled\n",
      "src/model/test/Surface_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "309 getModelObjects Surface\n",
      "398 getModelObjects Surface\n",
      "1346 getModelObjects Surface\n",
      "3043 getModelObjects Surface\n",
      "3050 getModelObjects Surface\n",
      "3110 getModelObjects Surface\n",
      "3125 getModelObjects Surface\n",
      "3192 getModelObjects Surface\n",
      "3212 getModelObjects Surface\n",
      "3282 getModelObjects Surface\n",
      "3295 getModelObjects Surface\n",
      "3362 getModelObjects Surface\n",
      "3375 getModelObjects Surface\n",
      "src/model/test/GeneratorFuelCell_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "138 getModelObjects ElectricLoadCenterDistribution\n",
      "147 getModelObjects ElectricLoadCenterDistribution\n",
      "src/model/test/ParentObject_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/ConstructionWithInternalSource_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "66 getModelObjects ConstructionWithInternalSource\n",
      "71 getModelObjects ConstructionWithInternalSource\n",
      "78 getModelObjects ConstructionWithInternalSource\n",
      "163 getModelObjects ConstructionWithInternalSource\n",
      "167 getModelObjects ConstructionWithInternalSource\n",
      "184 getModelObjects ConstructionWithInternalSource\n",
      "188 getModelObjects ConstructionWithInternalSource\n",
      "197 getModelObjects ConstructionWithInternalSource\n",
      "src/model/test/AirLoopHVACDedicatedOutdoorAirSystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "226 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "240 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "244 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "251 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "265 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "269 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "src/model/test/RefrigerationTranscriticalSystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "72 getModelObjects RefrigerationTranscriticalSystem\n",
      "75 getModelObjects ModelObjectList\n",
      "78 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "83 getModelObjects RefrigerationTranscriticalSystem\n",
      "86 getModelObjects ModelObjectList\n",
      "89 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "278 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "284 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "290 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "301 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "334 getModelObjects RefrigerationCompressor\n",
      "342 getModelObjects RefrigerationCompressor\n",
      "358 getModelObjects RefrigerationCompressor\n",
      "395 getModelObjects RefrigerationCompressor\n",
      "403 getModelObjects RefrigerationCompressor\n",
      "419 getModelObjects RefrigerationCompressor\n",
      "468 getModelObjects RefrigerationCase\n",
      "476 getModelObjects RefrigerationCase\n",
      "496 getModelObjects RefrigerationCase\n",
      "544 getModelObjects RefrigerationCase\n",
      "552 getModelObjects RefrigerationCase\n",
      "571 getModelObjects RefrigerationCase\n",
      "620 getModelObjects RefrigerationWalkIn\n",
      "628 getModelObjects RefrigerationWalkIn\n",
      "648 getModelObjects RefrigerationWalkIn\n",
      "696 getModelObjects RefrigerationWalkIn\n",
      "704 getModelObjects RefrigerationWalkIn\n",
      "723 getModelObjects RefrigerationWalkIn\n",
      "775 getModelObjects RefrigerationWalkIn\n",
      "786 getModelObjects RefrigerationCase\n",
      "800 getModelObjects RefrigerationWalkIn\n",
      "806 getModelObjects RefrigerationCase\n",
      "843 getModelObjects RefrigerationWalkIn\n",
      "845 getModelObjects RefrigerationCase\n",
      "902 getModelObjects RefrigerationWalkIn\n",
      "913 getModelObjects RefrigerationCase\n",
      "926 getModelObjects RefrigerationWalkIn\n",
      "932 getModelObjects RefrigerationCase\n",
      "967 getModelObjects RefrigerationWalkIn\n",
      "969 getModelObjects RefrigerationCase\n",
      "src/model/test/CentralHeatPumpSystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "337 getModelObjects CentralHeatPumpSystem\n",
      "338 getModelObjects CentralHeatPumpSystemModule\n",
      "342 getModelObjects CentralHeatPumpSystem\n",
      "343 getModelObjects CentralHeatPumpSystemModule\n",
      "351 getModelObjects CentralHeatPumpSystemModule\n",
      "352 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "363 getModelObjects CentralHeatPumpSystem\n",
      "365 getModelObjects CentralHeatPumpSystemModule\n",
      "367 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "383 getModelObjects CentralHeatPumpSystem\n",
      "384 getModelObjects CentralHeatPumpSystemModule\n",
      "385 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "src/model/test/ExteriorFuelEquipment_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "129 getModelObjects ExteriorFuelEquipment\n",
      "130 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "135 getModelObjects ExteriorFuelEquipment\n",
      "136 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "149 getModelObjects ExteriorFuelEquipment\n",
      "150 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "155 getModelObjects ExteriorFuelEquipment\n",
      "156 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "171 getModelObjects ExteriorFuelEquipment\n",
      "172 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "178 getModelObjects ExteriorFuelEquipment\n",
      "179 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "192 getModelObjects ExteriorFuelEquipment\n",
      "193 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "199 getModelObjects ExteriorFuelEquipment\n",
      "200 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "src/model/test/ResourceObject_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "109 getModelObjects StandardsInformationConstruction\n",
      "111 getModelObjects StandardsInformationConstruction\n",
      "src/model/test/SetpointManagerFollowOutdoorAirTemperature_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "85 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "95 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "112 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "119 getModelObjects SetpointManagerFollowOutdoorAirTemperature\n",
      "src/model/test/MeterCustom_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "54 getModelObjects MeterCustom\n",
      "57 getModelObjects MeterCustom\n",
      "src/model/test/GeneratorPhotovoltaic_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "271 getModelObjects ElectricLoadCenterDistribution\n",
      "280 getModelObjects ElectricLoadCenterDistribution\n",
      "src/model/test/DefaultSurfaceConstructions_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "79 getModelObjects DefaultSurfaceConstructions\n",
      "87 getModelObjects DefaultSurfaceConstructions\n",
      "src/model/test/SetpointManagerFollowSystemNodeTemperature_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "84 getModelObjects SetpointManagerFollowSystemNodeTemperature\n",
      "94 getModelObjects SetpointManagerFollowSystemNodeTemperature\n",
      "111 getModelObjects SetpointManagerFollowSystemNodeTemperature\n",
      "118 getModelObjects SetpointManagerFollowSystemNodeTemperature\n",
      "src/model/test/AdditionalProperties_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "81 getModelObjects AdditionalProperties\n",
      "86 getModelObjects AdditionalProperties\n",
      "src/model/test/SetpointManagerMultiZoneHeatingAverage_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "76 getModelObjects SetpointManagerMultiZoneHeatingAverage\n",
      "86 getModelObjects SetpointManagerMultiZoneHeatingAverage\n",
      "103 getModelObjects SetpointManagerMultiZoneHeatingAverage\n",
      "110 getModelObjects SetpointManagerMultiZoneHeatingAverage\n",
      "src/model/test/OutputVariable_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "116 getModelObjects OutputVariable\n",
      "src/model/test/CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/Construction_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "107 getModelObjects Construction\n",
      "192 getModelObjects CFactorUndergroundWallConstruction\n",
      "200 getModelObjects CFactorUndergroundWallConstruction\n",
      "212 getModelObjects FFactorGroundFloorConstruction\n",
      "220 getModelObjects FFactorGroundFloorConstruction\n",
      "232 getModelObjects WindowDataFile\n",
      "240 getModelObjects WindowDataFile\n",
      "323 getModelObjects Construction\n",
      "324 getModelObjects Construction\n",
      "372 getModelObjects Construction\n",
      "381 getModelObjects Construction\n",
      "402 getModelObjectByName Construction\n",
      "828 getModelObjects StandardsInformationConstruction\n",
      "831 getModelObjects StandardsInformationConstruction\n",
      "834 getModelObjects StandardsInformationConstruction\n",
      "855 getModelObjects StandardsInformationConstruction\n",
      "src/model/test/SetpointManagerSingleZoneHumidityMinimum_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "80 getModelObjects SetpointManagerSingleZoneHumidityMinimum\n",
      "90 getModelObjects SetpointManagerSingleZoneHumidityMinimum\n",
      "107 getModelObjects SetpointManagerSingleZoneHumidityMinimum\n",
      "114 getModelObjects SetpointManagerSingleZoneHumidityMinimum\n",
      "src/model/test/SetpointManagerColdest_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "76 getModelObjects SetpointManagerColdest\n",
      "86 getModelObjects SetpointManagerColdest\n",
      "102 getModelObjects SetpointManagerColdest\n",
      "109 getModelObjects SetpointManagerColdest\n",
      "src/model/test/SetpointManagerSingleZoneOneStageCooling_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "78 getModelObjects SetpointManagerSingleZoneOneStageCooling\n",
      "88 getModelObjects SetpointManagerSingleZoneOneStageCooling\n",
      "105 getModelObjects SetpointManagerSingleZoneOneStageCooling\n",
      "112 getModelObjects SetpointManagerSingleZoneOneStageCooling\n",
      "src/model/test/UtilityBill_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "116 getModelObjects OutputMeter\n",
      "118 getModelObjects OutputMeter\n",
      "129 getModelObjects OutputMeter\n",
      "132 getModelObjects OutputMeter\n",
      "135 getModelObjects OutputMeter\n",
      "139 getModelObjects OutputMeter\n",
      "143 getModelObjects OutputMeter\n",
      "147 getModelObjects OutputMeter\n",
      "150 getModelObjects OutputMeter\n",
      "154 getModelObjects OutputMeter\n",
      "src/model/test/ScheduleRuleset_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "78 getModelObjects ScheduleDay\n",
      "83 getModelObjects ScheduleDay\n",
      "88 getModelObjects ScheduleDay\n",
      "src/model/test/CoilCoolingDXVariableSpeed_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/FenestrationMaterial_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "100 getModelObjects Blind\n",
      "108 getModelObjects Blind\n",
      "120 getModelObjects Gas\n",
      "128 getModelObjects Gas\n",
      "196 getModelObjects GasMixture\n",
      "204 getModelObjects GasMixture\n",
      "233 getModelObjects RefractionExtinctionGlazing\n",
      "241 getModelObjects RefractionExtinctionGlazing\n",
      "253 getModelObjects Screen\n",
      "261 getModelObjects Screen\n",
      "273 getModelObjects Shade\n",
      "281 getModelObjects Shade\n",
      "293 getModelObjects SimpleGlazing\n",
      "301 getModelObjects SimpleGlazing\n",
      "313 getModelObjects StandardGlazing\n",
      "321 getModelObjects StandardGlazing\n",
      "333 getModelObjects ThermochromicGlazing\n",
      "341 getModelObjects ThermochromicGlazing\n",
      "src/model/test/Facility_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/GlareSensor_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "57 getModelObjects GlareSensor\n",
      "59 getModelObjects GlareSensor\n",
      "src/model/test/ChillerHeaterPerformanceElectricEIR_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "243 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "248 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "255 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "268 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "273 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "278 getModelObjects CentralHeatPumpSystemModule\n",
      "283 getModelObjects ChillerHeaterPerformanceElectricEIR\n",
      "287 getModelObjects CentralHeatPumpSystemModule\n",
      "src/model/test/RefrigerationCondenserCascade_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "159 getModelObjects RefrigerationCondenserCascade\n",
      "164 getModelObjects RefrigerationCondenserCascade\n",
      "src/model/test/AirTerminalSingleDuctVAVReheat_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "131 getModelObjects BoilerHotWater\n",
      "src/model/test/Alpha1_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "154 getModelObjects Lights\n",
      "155 getModelObjects Lights\n",
      "177 getModelObjects ScheduleCompact\n",
      "271 getModelObjects Lights\n",
      "274 getModelObjects ScheduleCompact\n",
      "src/model/test/ThreeJSReverseTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "135 getModelObjects Space\n",
      "136 getModelObjects Surface\n",
      "139 getModelObjects Surface\n",
      "152 getModelObjects Space\n",
      "153 getModelObjects Surface\n",
      "156 getModelObjects Surface\n",
      "src/model/test/SetpointManagerMultiZoneMaximumHumidityAverage_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "78 getModelObjects SetpointManagerMultiZoneMaximumHumidityAverage\n",
      "88 getModelObjects SetpointManagerMultiZoneMaximumHumidityAverage\n",
      "105 getModelObjects SetpointManagerMultiZoneMaximumHumidityAverage\n",
      "112 getModelObjects SetpointManagerMultiZoneMaximumHumidityAverage\n",
      "src/model/test/MeterCustomDecrement_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "54 getModelObjects MeterCustomDecrement\n",
      "57 getModelObjects MeterCustomDecrement\n",
      "src/model/test/SetpointManagerSingleZoneHumidityMaximum_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "80 getModelObjects SetpointManagerSingleZoneHumidityMaximum\n",
      "90 getModelObjects SetpointManagerSingleZoneHumidityMaximum\n",
      "107 getModelObjects SetpointManagerSingleZoneHumidityMaximum\n",
      "114 getModelObjects SetpointManagerSingleZoneHumidityMaximum\n",
      "src/model/test/RefrigerationCase_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "533 getModelObjects RefrigerationCase\n",
      "538 getModelObjects RefrigerationCase\n",
      "646 getModelObjects CurveCubic\n",
      "651 getModelObjects CurveCubic\n",
      "654 getModelObjects CurveCubic\n",
      "src/model/test/RefrigerationWalkIn_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "63 getModelObjects RefrigerationWalkIn\n",
      "66 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "71 getModelObjects RefrigerationWalkIn\n",
      "74 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "103 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "187 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "190 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "src/model/test/ThermalZone_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "363 getModelObjects LifeCycleCost\n",
      "398 getModelObjects LifeCycleCost\n",
      "440 getModelObjects LifeCycleCost\n",
      "491 getModelObjects LifeCycleCost\n",
      "671 getModelObjects ZoneControlContaminantController\n",
      "679 getModelObjects ZoneControlContaminantController\n",
      "692 getModelObjects ZoneControlContaminantController\n",
      "719 getModelObjects ZoneControlHumidistat\n",
      "727 getModelObjects ZoneControlHumidistat\n",
      "740 getModelObjects ZoneControlHumidistat\n",
      "src/model/test/PlantLoop_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/RefrigerationCondenserAirCooled_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "60 getModelObjects RefrigerationCondenserAirCooled\n",
      "65 getModelObjects RefrigerationCondenserAirCooled\n",
      "75 getModelObjects CurveLinear\n",
      "126 getModelObjects CurveLinear\n",
      "131 getModelObjects CurveLinear\n",
      "134 getModelObjects CurveLinear\n",
      "src/model/test/RenderingColor_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "63 getModelObjects RenderingColor\n",
      "65 getModelObjects RenderingColor\n",
      "87 getModelObjects RenderingColor\n",
      "89 getModelObjects RenderingColor\n",
      "176 getModelObjects RenderingColor\n",
      "src/model/test/ExteriorLights_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "128 getModelObjects ExteriorLights\n",
      "129 getModelObjects ExteriorLightsDefinition\n",
      "134 getModelObjects ExteriorLights\n",
      "135 getModelObjects ExteriorLightsDefinition\n",
      "148 getModelObjects ExteriorLights\n",
      "149 getModelObjects ExteriorLightsDefinition\n",
      "154 getModelObjects ExteriorLights\n",
      "155 getModelObjects ExteriorLightsDefinition\n",
      "170 getModelObjects ExteriorLights\n",
      "171 getModelObjects ExteriorLightsDefinition\n",
      "177 getModelObjects ExteriorLights\n",
      "178 getModelObjects ExteriorLightsDefinition\n",
      "191 getModelObjects ExteriorLights\n",
      "192 getModelObjects ExteriorLightsDefinition\n",
      "198 getModelObjects ExteriorLights\n",
      "199 getModelObjects ExteriorLightsDefinition\n",
      "src/model/test/CoilHeatingWater_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "83 getModelObjects CoilHeatingWater\n",
      "91 getModelObjects CoilHeatingWater\n",
      "95 getModelObjects CoilHeatingWater\n",
      "107 getModelObjects CoilHeatingWater\n",
      "111 getModelObjects CoilHeatingWater\n",
      "124 getModelObjects CoilHeatingWater\n",
      "129 getModelObjects CoilHeatingWater\n",
      "149 getModelObjects CoilHeatingWater\n",
      "155 getModelObjects CoilHeatingWater\n",
      "src/model/test/FanOnOff_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "114 getModelObjects FanOnOff\n",
      "117 getModelObjects CurveExponent\n",
      "120 getModelObjects CurveCubic\n",
      "125 getModelObjects FanOnOff\n",
      "129 getModelObjects CurveExponent\n",
      "131 getModelObjects CurveCubic\n",
      "169 getModelObjects CurveExponent\n",
      "174 getModelObjects CurveCubic\n",
      "188 getModelObjects CurveExponent\n",
      "189 getModelObjects CurveCubic\n",
      "193 getModelObjects CurveExponent\n",
      "194 getModelObjects CurveCubic\n",
      "231 getModelObjects CurveExponent\n",
      "233 getModelObjects CurveExponent\n",
      "236 getModelObjects CurveCubic\n",
      "238 getModelObjects CurveCubic\n",
      "243 getModelObjects CurveExponent\n",
      "246 getModelObjects CurveCubic\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "293 getModelObjects CurveExponent\n",
      "295 getModelObjects CurveExponent\n",
      "298 getModelObjects CurveCubic\n",
      "300 getModelObjects CurveCubic\n",
      "305 getModelObjects CurveExponent\n",
      "308 getModelObjects CurveCubic\n",
      "526 getModelObjects FanOnOff\n",
      "src/model/test/SetpointManagerSingleZoneReheat_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "77 getModelObjects SetpointManagerSingleZoneReheat\n",
      "87 getModelObjects SetpointManagerSingleZoneReheat\n",
      "103 getModelObjects SetpointManagerSingleZoneReheat\n",
      "110 getModelObjects SetpointManagerSingleZoneReheat\n",
      "src/model/test/IlluminanceMap_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "62 getModelObjects IlluminanceMap\n",
      "64 getModelObjects IlluminanceMap\n",
      "src/model/test/RefrigerationSecondarySystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "94 getModelObjects RefrigerationSecondarySystem\n",
      "97 getModelObjects ModelObjectList\n",
      "109 getModelObjects CurveCubic\n",
      "114 getModelObjects RefrigerationSecondarySystem\n",
      "117 getModelObjects ModelObjectList\n",
      "121 getModelObjects CurveCubic\n",
      "172 getModelObjects CurveCubic\n",
      "258 getModelObjects RefrigerationCase\n",
      "266 getModelObjects RefrigerationCase\n",
      "285 getModelObjects RefrigerationCase\n",
      "332 getModelObjects RefrigerationAirChiller\n",
      "340 getModelObjects RefrigerationAirChiller\n",
      "359 getModelObjects RefrigerationAirChiller\n",
      "406 getModelObjects RefrigerationWalkIn\n",
      "414 getModelObjects RefrigerationWalkIn\n",
      "433 getModelObjects RefrigerationWalkIn\n",
      "483 getModelObjects RefrigerationWalkIn\n",
      "494 getModelObjects RefrigerationCase\n",
      "507 getModelObjects RefrigerationWalkIn\n",
      "513 getModelObjects RefrigerationCase\n",
      "547 getModelObjects RefrigerationWalkIn\n",
      "549 getModelObjects RefrigerationCase\n",
      "src/model/test/OutputMeter_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "308 getModelObjects OutputMeter\n",
      "src/model/test/SetpointManagerScheduled_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "89 getModelObjects SetpointManagerScheduled\n",
      "99 getModelObjects SetpointManagerScheduled\n",
      "117 getModelObjects SetpointManagerScheduled\n",
      "124 getModelObjects SetpointManagerScheduled\n",
      "src/model/test/Lights_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "149 getModelObjects Lights\n",
      "150 getModelObjects LightsDefinition\n",
      "154 getModelObjects Lights\n",
      "155 getModelObjects LightsDefinition\n",
      "167 getModelObjects Lights\n",
      "168 getModelObjects LightsDefinition\n",
      "172 getModelObjects Lights\n",
      "173 getModelObjects LightsDefinition\n",
      "184 getModelObjects Lights\n",
      "185 getModelObjects LightsDefinition\n",
      "190 getModelObjects Lights\n",
      "191 getModelObjects LightsDefinition\n",
      "203 getModelObjects Lights\n",
      "204 getModelObjects LightsDefinition\n",
      "210 getModelObjects Lights\n",
      "211 getModelObjects LightsDefinition\n",
      "218 getModelObjects Lights\n",
      "src/model/test/CoilHeatingDXVariableSpeed_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/model/test/Building_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "353 getModelObjects Building\n",
      "354 getModelObjects Space\n",
      "356 getModelObjects ThermalZone\n",
      "361 getModelObjects BuildingStory\n",
      "385 getModelObjects Building\n",
      "386 getModelObjects Space\n",
      "387 getModelObjects ThermalZone\n",
      "388 getModelObjects BuildingStory\n",
      "395 getModelObjects Building\n",
      "396 getModelObjects Space\n",
      "398 getModelObjects ThermalZone\n",
      "403 getModelObjects BuildingStory\n",
      "473 getModelObjects Node\n",
      "475 getModelObjects PortList\n",
      "476 getModelObjects ThermalZone\n",
      "480 getModelObjects Node\n",
      "482 getModelObjects PortList\n",
      "483 getModelObjects ThermalZone\n",
      "487 getModelObjects AirLoopHVAC\n",
      "488 getModelObjects AirLoopHVAC\n",
      "495 getModelObjects Space\n",
      "496 getModelObjects ThermalZone\n",
      "497 getModelObjects ShadingSurfaceGroup\n",
      "498 getModelObjects BuildingStory\n",
      "501 getModelObjects OutputMeter\n",
      "509 getModelObjects Space\n",
      "510 getModelObjects ThermalZone\n",
      "514 getModelObjects ShadingSurfaceGroup\n",
      "515 getModelObjects BuildingStory\n",
      "516 getModelObjects OutputMeter\n",
      "520 getModelObjects AirLoopHVAC\n",
      "521 getModelObjects AirLoopHVAC\n",
      "src/model/test/GeneratorMicroTurbine_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "546 getModelObjects ElectricLoadCenterDistribution\n",
      "555 getModelObjects ElectricLoadCenterDistribution\n",
      "src/model/test/RefrigerationSubcoolerMechanical_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "93 getModelObjects RefrigerationSubcoolerMechanical\n",
      "98 getModelObjects RefrigerationSubcoolerMechanical\n",
      "162 getModelObjects RefrigerationSystem\n",
      "165 getModelObjects RefrigerationSystem\n",
      "src/model/test/RefrigerationCondenserWaterCooled_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "331 getModelObjects RefrigerationCondenserWaterCooled\n",
      "341 getModelObjects RefrigerationCondenserWaterCooled\n",
      "src/model/test/SetpointManagerOutdoorAirReset_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "156 getModelObjects SetpointManagerOutdoorAirReset\n",
      "166 getModelObjects SetpointManagerOutdoorAirReset\n",
      "182 getModelObjects SetpointManagerOutdoorAirReset\n",
      "189 getModelObjects SetpointManagerOutdoorAirReset\n",
      "src/model/test/Material_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "62 getModelObjects StandardsInformationMaterial\n",
      "73 getModelObjects StandardsInformationMaterial\n",
      "79 getModelObjects StandardsInformationMaterial\n",
      "93 getModelObjects StandardsInformationMaterial\n",
      "99 getModelObjects StandardsInformationMaterial\n",
      "111 getModelObjects StandardsInformationMaterial\n",
      "117 getModelObjects StandardsInformationMaterial\n",
      "126 getModelObjects StandardsInformationMaterial\n",
      "src/model/test/Component_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "117 getModelObjects ComponentData\n",
      "118 getModelObjects Lights\n",
      "119 getModelObjects ScheduleTypeLimits\n",
      "120 getModelObjects ScheduleCompact\n",
      "197 getModelObjects ComponentData\n",
      "src/model/test/ElectricEquipmentITEAirCooled_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "205 getModelObjects ElectricEquipmentITEAirCooled\n",
      "206 getModelObjects ElectricEquipmentITEAirCooledDefinition\n",
      "210 getModelObjects ElectricEquipmentITEAirCooled\n",
      "211 getModelObjects ElectricEquipmentITEAirCooledDefinition\n",
      "225 getModelObjects ElectricEquipmentITEAirCooled\n",
      "226 getModelObjects ElectricEquipmentITEAirCooledDefinition\n",
      "231 getModelObjects ElectricEquipmentITEAirCooled\n",
      "232 getModelObjects ElectricEquipmentITEAirCooledDefinition\n",
      "src/model/test/RefrigerationWalkInZoneBoundary_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "60 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "65 getModelObjects RefrigerationWalkInZoneBoundary\n",
      "src/model/test/ModelPartitionMaterial_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "66 getModelObjects AirWallMaterial\n",
      "74 getModelObjects AirWallMaterial\n",
      "86 getModelObjects InfraredTransparentMaterial\n",
      "94 getModelObjects InfraredTransparentMaterial\n",
      "src/model/test/People_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "125 getModelObjects People\n",
      "126 getModelObjects PeopleDefinition\n",
      "130 getModelObjects People\n",
      "131 getModelObjects PeopleDefinition\n",
      "143 getModelObjects People\n",
      "144 getModelObjects PeopleDefinition\n",
      "148 getModelObjects People\n",
      "149 getModelObjects PeopleDefinition\n",
      "160 getModelObjects People\n",
      "161 getModelObjects PeopleDefinition\n",
      "166 getModelObjects People\n",
      "167 getModelObjects PeopleDefinition\n",
      "179 getModelObjects People\n",
      "180 getModelObjects PeopleDefinition\n",
      "186 getModelObjects People\n",
      "187 getModelObjects PeopleDefinition\n",
      "223 getModelObjects People\n",
      "227 getModelObjects PeopleDefinition\n",
      "239 getModelObjects People\n",
      "243 getModelObjects PeopleDefinition\n",
      "src/model/test/SetpointManagerMixedAir_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "90 getModelObjects SetpointManagerMixedAir\n",
      "100 getModelObjects SetpointManagerMixedAir\n",
      "164 getModelObjects SetpointManagerMixedAir\n",
      "171 getModelObjects SetpointManagerMixedAir\n",
      "src/model/test/Space_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "120 getModelObjects Space\n",
      "121 getModelObjects Surface\n",
      "122 getModelObjects SubSurface\n",
      "138 getModelObjects Space\n",
      "139 getModelObjects Surface\n",
      "140 getModelObjects SubSurface\n",
      "560 getModelObjects Lights\n",
      "750 getModelObjects Space\n",
      "2511 getModelObjects Space\n",
      "2512 getModelObjects Surface\n",
      "2528 getModelObjects Space\n",
      "2741 getModelObjects Space\n",
      "2792 getModelObjects Space\n",
      "2910 getModelObjects Space\n",
      "src/model/test/SetpointManagerSingleZoneOneStageHeating_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "78 getModelObjects SetpointManagerSingleZoneOneStageHeating\n",
      "88 getModelObjects SetpointManagerSingleZoneOneStageHeating\n",
      "105 getModelObjects SetpointManagerSingleZoneOneStageHeating\n",
      "112 getModelObjects SetpointManagerSingleZoneOneStageHeating\n",
      "src/model/test/DesignSpecificationOutdoorAir_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "98 getModelObjects DesignSpecificationOutdoorAir\n",
      "103 getModelObjects DesignSpecificationOutdoorAir\n",
      "149 getModelObjects DesignSpecificationOutdoorAir\n",
      "154 getModelObjects DesignSpecificationOutdoorAir\n",
      "src/model/test/RefrigerationCompressor_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "58 getModelObjects RefrigerationCompressor\n",
      "63 getModelObjects RefrigerationCompressor\n",
      "74 getModelObjects CurveBicubic\n",
      "201 getModelObjects CurveBicubic\n",
      "206 getModelObjects CurveBicubic\n",
      "209 getModelObjects CurveBicubic\n",
      "src/model/test/RefrigerationCondenserEvaporativeCooled_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "63 getModelObjects RefrigerationCondenserEvaporativeCooled\n",
      "68 getModelObjects RefrigerationCondenserEvaporativeCooled\n",
      "src/model/test/GeneratorPVWatts_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "213 getModelObjects GeneratorPVWatts\n",
      "217 getModelObjects GeneratorPVWatts\n",
      "221 getModelObjects GeneratorPVWatts\n",
      "251 getModelObjects ElectricLoadCenterDistribution\n",
      "260 getModelObjects ElectricLoadCenterDistribution\n",
      "src/model/test/CoilSystemCoolingDXHeatExchangerAssisted_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "204 getModelObjects CoilSystemCoolingDXHeatExchangerAssisted\n",
      "205 getModelObjects CoilCoolingDXSingleSpeed\n",
      "206 getModelObjects HeatExchangerAirToAirSensibleAndLatent\n",
      "213 getModelObjects CoilSystemCoolingDXHeatExchangerAssisted\n",
      "214 getModelObjects CoilCoolingDXSingleSpeed\n",
      "215 getModelObjects HeatExchangerAirToAirSensibleAndLatent\n",
      "src/model/test/AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "199 getModelObjects Node\n",
      "201 getModelObjects Node\n",
      "223 getModelObjects Node\n",
      "242 getModelObjects Node\n",
      "258 getModelObjects Node\n",
      "263 getModelObjects Node\n",
      "src/model/test/RefrigerationGasCoolerAirCooled_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "62 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "65 getModelObjects CurveLinear\n",
      "70 getModelObjects RefrigerationGasCoolerAirCooled\n",
      "74 getModelObjects CurveLinear\n",
      "117 getModelObjects CurveLinear\n",
      "src/model/test/SetpointManagerMultiZoneMinimumHumidityAverage_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "76 getModelObjects SetpointManagerMultiZoneMinimumHumidityAverage\n",
      "86 getModelObjects SetpointManagerMultiZoneMinimumHumidityAverage\n",
      "103 getModelObjects SetpointManagerMultiZoneMinimumHumidityAverage\n",
      "110 getModelObjects SetpointManagerMultiZoneMinimumHumidityAverage\n",
      "src/model/test/OpaqueMaterial_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "83 getModelObjects AirGap\n",
      "91 getModelObjects AirGap\n",
      "103 getModelObjects MasslessOpaqueMaterial\n",
      "111 getModelObjects MasslessOpaqueMaterial\n",
      "123 getModelObjects RoofVegetation\n",
      "131 getModelObjects RoofVegetation\n",
      "143 getModelObjects StandardOpaqueMaterial\n",
      "151 getModelObjects StandardOpaqueMaterial\n",
      "163 getModelObjects StandardsInformationMaterial\n",
      "166 getModelObjects StandardsInformationMaterial\n",
      "169 getModelObjects StandardsInformationMaterial\n",
      "201 getModelObjects StandardsInformationMaterial\n",
      "src/model/test/CoilWaterHeatingDesuperheater_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "83 getModelObjects CoilWaterHeatingDesuperheater\n",
      "86 getModelObjects RefrigerationCondenserAirCooled\n",
      "89 getModelObjects WaterHeaterMixed\n",
      "92 getModelObjects CurveBiquadratic\n",
      "95 getModelObjects Node\n",
      "100 getModelObjects CoilWaterHeatingDesuperheater\n",
      "103 getModelObjects RefrigerationCondenserAirCooled\n",
      "106 getModelObjects WaterHeaterMixed\n",
      "110 getModelObjects CurveBiquadratic\n",
      "113 getModelObjects Node\n",
      "132 getModelObjects CoilWaterHeatingDesuperheater\n",
      "135 getModelObjects CoilCoolingWaterToAirHeatPumpEquationFit\n",
      "138 getModelObjects WaterHeaterStratified\n",
      "142 getModelObjects CoilCoolingWaterToAirHeatPumpEquationFit\n",
      "146 getModelObjects CurveBiquadratic\n",
      "149 getModelObjects Node\n",
      "154 getModelObjects CoilWaterHeatingDesuperheater\n",
      "157 getModelObjects CoilCoolingWaterToAirHeatPumpEquationFit\n",
      "160 getModelObjects WaterHeaterStratified\n",
      "163 getModelObjects CoilCoolingWaterToAirHeatPumpEquationFit\n",
      "167 getModelObjects CurveBiquadratic\n",
      "170 getModelObjects Node\n",
      "189 getModelObjects CoilWaterHeatingDesuperheater\n",
      "192 getModelObjects CoilCoolingDXMultiSpeed\n",
      "195 getModelObjects WaterHeaterStratified\n",
      "199 getModelObjects CoilCoolingDXMultiSpeed\n",
      "203 getModelObjects CurveBiquadratic\n",
      "206 getModelObjects Node\n",
      "211 getModelObjects CoilWaterHeatingDesuperheater\n",
      "214 getModelObjects CoilCoolingDXMultiSpeed\n",
      "217 getModelObjects WaterHeaterStratified\n",
      "220 getModelObjects CoilCoolingDXMultiSpeed\n",
      "224 getModelObjects CurveBiquadratic\n",
      "227 getModelObjects Node\n",
      "src/model/test/RefrigerationSubcoolerLiquidSuction_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "105 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "110 getModelObjects RefrigerationSubcoolerLiquidSuction\n",
      "src/model/test/AirLoopHVAC_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "534 getModelObjects AirLoopHVAC\n",
      "535 getModelObjects SizingSystem\n",
      "539 getModelObjects AirLoopHVAC\n",
      "540 getModelObjects SizingSystem\n",
      "544 getModelObjects AirLoopHVAC\n",
      "545 getModelObjects SizingSystem\n",
      "1100 getModelObjects AvailabilityManagerAssignmentList\n",
      "1103 getModelObjects AvailabilityManagerAssignmentList\n",
      "1111 getModelObjects AvailabilityManagerAssignmentList\n",
      "1116 getModelObjects AvailabilityManagerAssignmentList\n",
      "1121 getModelObjects AvailabilityManagerAssignmentList\n",
      "1126 getModelObjects AvailabilityManagerAssignmentList\n",
      "1131 getModelObjects AvailabilityManagerAssignmentList\n",
      "1136 getModelObjects AvailabilityManagerAssignmentList\n",
      "1141 getModelObjects AvailabilityManagerAssignmentList\n",
      "src/model/test/AvailabilityManagerAssignmentList_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "193 getModelObjects AvailabilityManagerAssignmentList\n",
      "197 getModelObjects AvailabilityManagerAssignmentList\n",
      "198 getModelObjects AvailabilityManagerAssignmentList\n",
      "206 getModelObjects AvailabilityManagerAssignmentList\n",
      "207 getModelObjects AvailabilityManagerAssignmentList\n",
      "220 getModelObjects AvailabilityManagerAssignmentList\n",
      "src/model/test/RefrigerationCompressorRack_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "264 getModelObjects RefrigerationCompressorRack\n",
      "267 getModelObjects ModelObjectList\n",
      "270 getModelObjects CurveQuadratic\n",
      "275 getModelObjects RefrigerationCompressorRack\n",
      "278 getModelObjects ModelObjectList\n",
      "281 getModelObjects CurveQuadratic\n",
      "src/model/test/CoilSystemCoolingWaterHeatExchangerAssisted_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "131 getModelObjects CoilSystemCoolingWaterHeatExchangerAssisted\n",
      "132 getModelObjects CoilCoolingWater\n",
      "133 getModelObjects HeatExchangerAirToAirSensibleAndLatent\n",
      "147 getModelObjects CoilSystemCoolingWaterHeatExchangerAssisted\n",
      "148 getModelObjects CoilCoolingWater\n",
      "149 getModelObjects HeatExchangerAirToAirSensibleAndLatent\n",
      "src/model/test/CoilHeatingDXMultiSpeed_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/sdd/ForwardTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/sdd/MapEnvelope.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/sdd/MapSchedules.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "83 getModelObjectByName ScheduleTypeLimits\n",
      "161 getModelObjectByName ScheduleTypeLimits\n",
      "168 getModelObjectByName ScheduleDay\n",
      "178 getModelObjectByName ScheduleDay\n",
      "188 getModelObjectByName ScheduleDay\n",
      "198 getModelObjectByName ScheduleDay\n",
      "208 getModelObjectByName ScheduleDay\n",
      "218 getModelObjectByName ScheduleDay\n",
      "228 getModelObjectByName ScheduleDay\n",
      "238 getModelObjectByName ScheduleDay\n",
      "250 getModelObjectByName ScheduleDay\n",
      "260 getModelObjectByName ScheduleDay\n",
      "308 getModelObjectByName ScheduleTypeLimits\n",
      "319 getModelObjectByName ScheduleWeek\n",
      "src/sdd/MapGeometry.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "370 getModelObjectByName Space\n",
      "386 getModelObjectByName ThermalZone\n",
      "596 getModelObjectByName ScheduleTypeLimits\n",
      "1460 getModelObjectByName Space\n",
      "src/sdd/MapHVAC.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "3523 getModelObjectByName ThermalZone\n",
      "4017 getModelObjectByName AirLoopHVAC\n",
      "4026 getModelObjectByName ThermalZone\n",
      "4092 getModelObjectByName AirLoopHVAC\n",
      "4102 getModelObjectByName ThermalZone\n",
      "4299 getModelObjectByName ThermalZone\n",
      "4306 getModelObjectByName ThermalZone\n",
      "4740 getModelObjectByName PlantLoop\n",
      "5659 getModelObjectByName CurveCubic\n",
      "5876 getModelObjectByName CurveCubic\n",
      "6090 getModelObjectByName ThermalZone\n",
      "6314 getModelObjectByName CurveBiquadratic\n",
      "6334 getModelObjectByName CurveBiquadratic\n",
      "6354 getModelObjectByName CurveQuadratic\n",
      "6495 getModelObjectByName ThermalZone\n",
      "6539 getModelObjectByName ThermalZone\n",
      "6835 getModelObjectByName CurveCubic\n",
      "7507 getModelObjectByName AirConditionerVariableRefrigerantFlow\n",
      "src/sdd/ReverseTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "662 getModelObjects PlantLoop\n",
      "713 getModelObjects AirLoopHVAC\n",
      "963 getModelObjects FanZoneExhaust\n",
      "1084 getModelObjects ThermalZone\n",
      "1233 getModelObjects ZoneHVACPackagedTerminalAirConditioner\n",
      "1239 getModelObjects ZoneHVACPackagedTerminalHeatPump\n",
      "1245 getModelObjects ZoneHVACWaterToAirHeatPump\n",
      "1275 getModelObjects ZoneHVACFourPipeFanCoil\n",
      "1281 getModelObjects ZoneHVACBaseboardConvectiveElectric\n",
      "1343 getModelObjects HeatExchangerAirToAirSensibleAndLatent\n",
      "1403 getModelObjects AirLoopHVAC\n",
      "1526 getModelObjects PlantLoop\n",
      "1924 getModelObjectByName PlantLoop\n",
      "1954 getModelObjectByName PlantLoop\n",
      "src/sdd/Test/ForwardTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "75 getModelObjects SubSurface\n",
      "src/radiance/ForwardTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/radiance/Test/ForwardTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "260 getModelObjects IlluminanceMap\n",
      "279 getModelObjects DaylightingControl\n",
      "298 getModelObjects GlareSensor\n",
      "317 getModelObjects ThermalZone\n",
      "src/measure/test/OSMeasure_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "89 getModelObjects Space\n",
      "123 getModelObjects Space\n",
      "126 getModelObjects Space\n",
      "142 getModelObjects Space\n",
      "145 getModelObjects Space\n",
      "src/energyplus/ForwardTranslator.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "src/energyplus/Test/FanSystemModel_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "375 getModelObjects FanSystemModel\n",
      "425 getModelObjects FanSystemModel\n",
      "442 getModelObjects FanSystemModel\n",
      "src/energyplus/Test/SubSurface_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "83 getModelObjects SubSurface\n",
      "src/energyplus/Test/ShadowCalculation_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "369 getModelObjectByName ThermalZone\n",
      "371 getModelObjectByName ThermalZone\n",
      "373 getModelObjectByName ThermalZone\n",
      "src/energyplus/Test/DaylightingDeviceLightWell_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "79 getModelObjects DaylightingDeviceLightWell\n",
      "src/energyplus/Test/PlantComponentUserDefined_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "85 getModelObjects AirLoopHVAC\n",
      "89 getModelObjects ThermalZone\n",
      "91 getModelObjects PlantLoop\n",
      "93 getModelObjects PumpVariableSpeed\n",
      "96 getModelObjects ThermalZone\n",
      "src/energyplus/Test/GeneratorWindTurbine_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "128 getModelObjects ElectricLoadCenterDistribution\n",
      "134 getModelObjects GeneratorWindTurbine\n",
      "src/energyplus/Test/SpaceInfiltrationFlowCoefficient_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "189 getModelObjects SpaceInfiltrationFlowCoefficient\n",
      "206 getModelObjects SpaceInfiltrationFlowCoefficient\n",
      "src/energyplus/Test/ExteriorWaterEquipment_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "119 getModelObjects ScheduleConstant\n",
      "120 getModelObjects ExteriorWaterEquipmentDefinition\n",
      "121 getModelObjects ExteriorWaterEquipment\n",
      "122 getModelObjects ExteriorWaterEquipment\n",
      "src/energyplus/Test/ZoneHVACLowTempRadiantConstFlow_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "79 getModelObjects ThermalZone\n",
      "133 getModelObjects DefaultConstructionSet\n",
      "143 getModelObjects ThermalZone\n",
      "src/energyplus/Test/ZoneHVACLowTempRadiantVarFlow_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "81 getModelObjects ThermalZone\n",
      "124 getModelObjects DefaultConstructionSet\n",
      "132 getModelObjects ThermalZone\n",
      "src/energyplus/Test/ZoneVentilationWindandStackOpenArea_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "229 getModelObjects ThermalZone\n",
      "230 getModelObjects ThermalZone\n",
      "232 getModelObjects ZoneVentilationWindandStackOpenArea\n",
      "233 getModelObjects ZoneVentilationWindandStackOpenArea\n",
      "src/energyplus/Test/ConstructionWithInternalSource_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "132 getModelObjects Construction\n",
      "133 getModelObjects ConstructionWithInternalSource\n",
      "src/energyplus/Test/AirLoopHVACDedicatedOutdoorAirSystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "445 getModelObjects AirLoopHVACDedicatedOutdoorAirSystem\n",
      "src/energyplus/Test/ExteriorFuelEquipment_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "120 getModelObjects ScheduleConstant\n",
      "121 getModelObjects ExteriorFuelEquipmentDefinition\n",
      "122 getModelObjects ExteriorFuelEquipment\n",
      "123 getModelObjects ExteriorFuelEquipment\n",
      "src/energyplus/Test/Construction_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "92 getModelObjects Construction\n",
      "93 getModelObjects Construction\n",
      "src/energyplus/Test/ScheduleRuleset_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "289 getModelObjects ScheduleRuleset\n",
      "290 getModelObjects ScheduleDay\n",
      "307 getModelObjects ScheduleRule\n",
      "308 getModelObjects ScheduleDay\n",
      "354 getModelObjects ScheduleRuleset\n",
      "355 getModelObjects ScheduleDay\n",
      "370 getModelObjects ScheduleRule\n",
      "371 getModelObjects ScheduleDay\n",
      "441 getModelObjects ScheduleRuleset\n",
      "442 getModelObjects ScheduleDay\n",
      "459 getModelObjects ScheduleRule\n",
      "460 getModelObjects ScheduleDay\n",
      "704 getModelObjects ScheduleRuleset\n",
      "717 getModelObjects ScheduleRule\n",
      "741 getModelObjects ScheduleDay\n",
      "749 getModelObjects ScheduleYear\n",
      "752 getModelObjects ScheduleWeek\n",
      "867 getModelObjects ScheduleRuleset\n",
      "880 getModelObjects ScheduleRule\n",
      "883 getModelObjectByName ScheduleRule\n",
      "907 getModelObjectByName ScheduleRule\n",
      "931 getModelObjectByName ScheduleRule\n",
      "955 getModelObjects ScheduleDay\n",
      "964 getModelObjects ScheduleYear\n",
      "967 getModelObjects ScheduleWeek\n",
      "1082 getModelObjects ScheduleYear\n",
      "1088 getModelObjects ScheduleDay\n",
      "1093 getModelObjects ScheduleRuleset\n",
      "1096 getModelObjects ScheduleWeek\n",
      "1223 getModelObjects ScheduleRuleset\n",
      "1236 getModelObjects ScheduleRule\n",
      "1239 getModelObjectByName ScheduleRule\n",
      "1263 getModelObjectByName ScheduleRule\n",
      "1287 getModelObjectByName ScheduleRule\n",
      "1311 getModelObjects ScheduleDay\n",
      "1320 getModelObjects ScheduleYear\n",
      "1323 getModelObjects ScheduleWeek\n",
      "src/energyplus/Test/InteriorPartitionSurface_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "106 getModelObjects Surface\n",
      "src/energyplus/Test/ZoneHVACLowTemperatureRadiantElectric_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "73 getModelObjects ThermalZone\n",
      "104 getModelObjects DefaultConstructionSet\n",
      "112 getModelObjects ThermalZone\n",
      "src/energyplus/Test/EMS_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "347 getModelObjects EnergyManagementSystemSensor\n",
      "348 getModelObjects EnergyManagementSystemSensor\n",
      "350 getModelObjects EnergyManagementSystemSensor\n",
      "1833 getModelObjects EnergyManagementSystemSensor\n",
      "1835 getModelObjects AvailabilityManagerHighTemperatureTurnOff\n",
      "1849 getModelObjects AvailabilityManagerHighTemperatureTurnOff\n",
      "1869 getModelObjects Lights\n",
      "1870 getModelObjects ElectricEquipment\n",
      "1871 getModelObjects Space\n",
      "1872 getModelObjects SpaceType\n",
      "1873 getModelObjects ThermalZone\n",
      "1874 getModelObjectByName Space\n",
      "1927 getModelObjects Lights\n",
      "1928 getModelObjects ElectricEquipment\n",
      "1929 getModelObjects Space\n",
      "1930 getModelObjects SpaceType\n",
      "1931 getModelObjects ThermalZone\n",
      "1932 getModelObjectByName Space\n",
      "2011 getModelObjects Lights\n",
      "2012 getModelObjects ElectricEquipment\n",
      "2013 getModelObjects Space\n",
      "2014 getModelObjects SpaceType\n",
      "2015 getModelObjects ThermalZone\n",
      "2093 getModelObjects Lights\n",
      "2094 getModelObjects ElectricEquipment\n",
      "2095 getModelObjects Space\n",
      "2096 getModelObjects SpaceType\n",
      "2097 getModelObjects ThermalZone\n",
      "2175 getModelObjects Lights\n",
      "2176 getModelObjects ElectricEquipment\n",
      "2177 getModelObjects Space\n",
      "2178 getModelObjects SpaceType\n",
      "2179 getModelObjects ThermalZone\n",
      "2303 getModelObjects EnergyManagementSystemGlobalVariable\n",
      "2304 getModelObjects EnergyManagementSystemProgramCallingManager\n",
      "2309 getModelObjects EnergyManagementSystemProgram\n",
      "2346 getModelObjects EnergyManagementSystemSubroutine\n",
      "src/energyplus/Test/ThermalZone_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "811 getModelObjects Lights\n",
      "813 getModelObjects Lights\n",
      "908 getModelObjects Lights\n",
      "910 getModelObjects Lights\n",
      "src/energyplus/Test/PlantLoop_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "75 getModelObjects AirLoopHVAC\n",
      "79 getModelObjects ThermalZone\n",
      "81 getModelObjects PlantLoop\n",
      "83 getModelObjects PumpVariableSpeed\n",
      "114 getModelObjects PlantLoop\n",
      "142 getModelObjects PlantLoop\n",
      "src/energyplus/Test/DaylightingDeviceShelf_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "96 getModelObjects Surface\n",
      "97 getModelObjects DaylightingDeviceShelf\n",
      "98 getModelObjects InteriorPartitionSurface\n",
      "99 getModelObjects ShadingSurface\n",
      "100 getModelObjects InternalMass\n",
      "125 getModelObjects Surface\n",
      "126 getModelObjects DaylightingDeviceShelf\n",
      "127 getModelObjects InteriorPartitionSurface\n",
      "128 getModelObjects ShadingSurface\n",
      "129 getModelObjects InternalMass\n",
      "src/energyplus/Test/ExteriorLights_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "120 getModelObjects ScheduleConstant\n",
      "121 getModelObjects ExteriorLightsDefinition\n",
      "122 getModelObjects ExteriorLights\n",
      "123 getModelObjects ExteriorLights\n",
      "src/energyplus/Test/PhotovoltaicPerformanceSandia_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "313 getModelObjects PhotovoltaicPerformanceSandia\n",
      "src/energyplus/Test/Lights_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "557 getModelObjects SpaceType\n",
      "558 getModelObjects SpaceType\n",
      "560 getModelObjects ThermalZone\n",
      "561 getModelObjects ThermalZone\n",
      "563 getModelObjects Space\n",
      "564 getModelObjects Space\n",
      "571 getModelObjects Lights\n",
      "572 getModelObjects Lights\n",
      "src/energyplus/Test/WindowPropertyFrameAndDivider_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "122 getModelObjectByName SubSurface\n",
      "131 getModelObjectByName SubSurface\n",
      "src/energyplus/Test/GeneratorMicroTurbine_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "250 getModelObjects ElectricLoadCenterDistribution\n",
      "256 getModelObjects GeneratorMicroTurbine\n",
      "src/energyplus/Test/SizingSystem_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "165 getModelObjects SizingSystem\n",
      "src/energyplus/Test/DaylightingDeviceTubular_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "93 getModelObjects DaylightingDeviceTubular\n",
      "src/energyplus/Test/Space_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "252 getModelObjects SpaceType\n",
      "253 getModelObjects SpaceType\n",
      "470 getModelObjects SpaceType\n",
      "471 getModelObjects SpaceType\n",
      "src/energyplus/Test/ShadingControl_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "386 getModelObjects Surface\n",
      "387 getModelObjects SubSurface\n",
      "388 getModelObjects ScheduleConstant\n",
      "390 getModelObjects ShadingControl\n",
      "406 getModelObjects SubSurface\n",
      "src/energyplus/Test/FanComponentModel_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "574 getModelObjects FanComponentModel\n",
      "src/energyplus/Test/ElectricLoadCenterStorageLiIonNMCBattery_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "127 getModelObjects ElectricLoadCenterStorageLiIonNMCBattery\n",
      "src/energyplus/Test/AirflowNetwork_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "106 getModelObjects AirLoopHVAC\n",
      "133 getModelObjects ThermalZone\n",
      "src/energyplus/Test/RunPeriodControlSpecialDays_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "128 getModelObjects RunPeriodControlSpecialDays\n",
      "150 getModelObjects RunPeriodControlSpecialDays\n",
      "src/energyplus/Test/DesignDay_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "157 getModelObjects DesignDay\n",
      "src/energyplus/Test/AirLoopHVAC_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "90 getModelObjects AirLoopHVAC\n",
      "113 getModelObjects ThermalZone\n",
      "214 getModelObjects AirLoopHVAC\n",
      "240 getModelObjects AirLoopHVAC\n",
      "267 getModelObjects AirLoopHVAC\n",
      "src/energyplus/Test/ReverseTranslator_GTest.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "242 getModelObjects ThermalZone\n",
      "243 getModelObjects ThermalZone\n",
      "244 getModelObjects Space\n",
      "245 getModelObjects Space\n",
      "246 getModelObjects Lights\n",
      "247 getModelObjects Lights\n",
      "284 getModelObjects ScheduleCompact\n",
      "285 getModelObjects ScheduleCompact\n",
      "326 getModelObjects MasslessOpaqueMaterial\n",
      "327 getModelObjects MasslessOpaqueMaterial\n",
      "356 getModelObjects StandardOpaqueMaterial\n",
      "357 getModelObjects StandardOpaqueMaterial\n",
      "384 getModelObjectByName Construction\n",
      "427 getModelObjectByName SubSurface\n",
      "439 getModelObjectByName Surface\n",
      "451 getModelObjectByName Surface\n",
      "487 getModelObjects ScheduleDay\n",
      "512 getModelObjects OtherEquipment\n",
      "672 getModelObjects FoundationKiva\n",
      "679 getModelObjects Surface\n",
      "820 getModelObjects ThermalZone\n",
      "824 getModelObjects Surface\n",
      "896 getModelObjects ThermalZone\n",
      "900 getModelObjects Surface\n",
      "954 getModelObjects ThermalZone\n",
      "955 getModelObjects ThermalZone\n",
      "956 getModelObjectByName ThermalZone\n",
      "958 getModelObjectByName ThermalZone\n",
      "961 getModelObjects Space\n",
      "962 getModelObjectByName Space\n",
      "964 getModelObjectByName Space\n",
      "967 getModelObjects SpaceType\n",
      "968 getModelObjects SpaceType\n",
      "999 getModelObjects ThermalZone\n",
      "1000 getModelObjects ThermalZone\n",
      "1001 getModelObjectByName ThermalZone\n",
      "1003 getModelObjectByName ThermalZone\n",
      "1006 getModelObjects Space\n",
      "1007 getModelObjectByName Space\n",
      "1009 getModelObjectByName Space\n",
      "1012 getModelObjects SpaceType\n",
      "1013 getModelObjectByName SpaceType\n",
      "1015 getModelObjectByName SpaceType\n",
      "1046 getModelObjects StandardGlazing\n",
      "1065 getModelObjects MaterialPropertyGlazingSpectralData\n",
      "1088 getModelObjects StandardGlazing\n",
      "1092 getModelObjects MaterialPropertyGlazingSpectralData\n",
      "1134 getModelObjects DaylightingControl\n",
      "1209 getModelObjects SurfaceControlMovableInsulation\n",
      "1214 getModelObjects Surface\n",
      "1384 getModelObjects CurveBiquadratic\n",
      "1387 getModelObjects CurveQuadratic\n",
      "1390 getModelObjects CoilCoolingDXCurveFitSpeed\n",
      "1395 getModelObjects CoilCoolingDXCurveFitOperatingMode\n",
      "1401 getModelObjects CoilCoolingDXCurveFitPerformance\n",
      "1409 getModelObjects CoilCoolingDX\n",
      "src/energyplus/ReverseTranslator/ReverseTranslateSetpointManagerMixedAir.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "53 getModelObjectByName Node\n",
      "75 getModelObjectByName Node\n",
      "84 getModelObjectByName Node\n",
      "93 getModelObjectByName Node\n",
      "102 getModelObjectByName Node\n",
      "src/energyplus/ReverseTranslator/ReverseTranslateZoneHVACEquipmentList.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "70 getModelObjectByName Space\n",
      "src/energyplus/ReverseTranslator/ReverseTranslateSetpointManagerSingleZoneReheat.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "58 getModelObjectByName Node\n",
      "108 getModelObjectByName Node\n",
      "src/energyplus/ReverseTranslator/ReverseTranslateSetpointManagerScheduled.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n",
      "69 getModelObjectByName Node\n",
      "94 getModelObjectByName Node\n",
      "src/energyplus/ForwardTranslator/ForwardTranslateSimulationControl.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "src/energyplus/ForwardTranslator/ForwardTranslateThermalZone.cpp has call to getObject template\n",
      "[('getModelObjects', 'SizingPeriod')]\n"
     ]
    }
   ],
   "source": [
    "cpp_files = list(ROOT_DIR.glob(\"src/**/*.cpp\"))\n",
    "for cpp_file in cpp_files:\n",
    "    # for cpp_file in [Path('/Users/julien/Software/Others/OpenStudio/src/model/AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.cpp')]:\n",
    "\n",
    "    class_name = cpp_file.stem\n",
    "    with open(cpp_file, \"r\") as f:\n",
    "        content = f.read()\n",
    "    if not any([x in content for x in lookfors]):\n",
    "        # print(f'{cpp_file.relative_to(ROOT_DIR)} has no getObject')\n",
    "        continue\n",
    "\n",
    "    # found_calls = []\n",
    "    # for x in re_getobject_call.finditer(content):\n",
    "    #    found_calls.append(x.groups())\n",
    "    # if not found_calls:\n",
    "    #    #print(f'{cpp_file.relative_to(ROOT_DIR)} has no getObject')\n",
    "    #    continue\n",
    "\n",
    "    print(f\"{cpp_file.relative_to(ROOT_DIR)} has call to getObject template\")\n",
    "    print(found_calls)\n",
    "\n",
    "    lines = content.splitlines()\n",
    "    new_lines = []\n",
    "    for i, line in enumerate(lines):\n",
    "        if m := re_getobject_call.search(line):\n",
    "            template, t = m.groups()\n",
    "            type_clean = t.split(\"::\")[-1]\n",
    "            if type_clean in concrete_classes:\n",
    "                new_lines.append(line.replace(template, template.replace(\"getModelObject\", \"getConcreteModelObject\")))\n",
    "                print(i, template, type_clean)\n",
    "                continue\n",
    "\n",
    "        new_lines.append(line)\n",
    "\n",
    "    with open(cpp_file, \"w\") as f:\n",
    "        f.write(\"\\n\".join(new_lines) + \"\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "c9439682",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "template <> struct is_concrete_model_mobject<AdditionalProperties> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirConditionerVariableRefrigerantFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkConstantPressureDrop> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkCrack> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkDetailedOpening> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkDistributionNode> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkDuct> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkDuctViewFactors> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkEffectiveLeakageArea> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkEquivalentDuct> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkExternalNode> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkFan> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkHorizontalOpening> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkLeakageRatio> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkOccupantVentilationControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkOutdoorAirflow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkDistributionLinkage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkReferenceCrackConditions> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkSimpleOpening> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkSimulationControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkSpecifiedFlowRate> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkSurface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkZone> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirflowNetworkZoneExhaustFan> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirGap> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVAC> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACOutdoorAirSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACDedicatedOutdoorAirSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACUnitaryHeatPumpAirToAir> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACReturnPlenum> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACSupplyPlenum> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACUnitarySystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACZoneMixer> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirLoopHVACZoneSplitter> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalDualDuctConstantVolume> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalDualDuctVAV> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalDualDuctVAVOutdoorAir> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctInletSideMixer> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctConstantVolumeCooledBeam> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctConstantVolumeFourPipeInduction> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctConstantVolumeFourPipeBeam> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctConstantVolumeReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctParallelPIUReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctSeriesPIUReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctConstantVolumeNoReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctVAVReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctVAVNoReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctVAVHeatAndCoolNoReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirTerminalSingleDuctVAVHeatAndCoolReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AirWallMaterial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerAssignmentList> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerNightCycle> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerHybridVentilation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerOptimumStart> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerDifferentialThermostat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerNightVentilation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerHighTemperatureTurnOn> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerHighTemperatureTurnOff> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerLowTemperatureTurnOn> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerLowTemperatureTurnOff> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerScheduled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerScheduledOn> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<AvailabilityManagerScheduledOff> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Blind> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<BoilerHotWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<BoilerSteam> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Building> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<BuildingStory> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<BuildingUnit> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CentralHeatPumpSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CentralHeatPumpSystemModule> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CFactorUndergroundWallConstruction> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ClimateZones> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ChillerAbsorption> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ChillerAbsorptionIndirect> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ChillerElectricEIR> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ChillerElectricReformulatedEIR> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ChillerHeaterPerformanceElectricEIR> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingCooledBeam> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDX> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXCurveFitPerformance> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXCurveFitOperatingMode> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXCurveFitSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXMultiSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXMultiSpeedStageData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXSingleSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXTwoSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXTwoStageWithHumidityControlMode> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXVariableRefrigerantFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingLowTempRadiantConstFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingLowTempRadiantVarFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXVariableSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingDXVariableSpeedSpeedData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingFourPipeBeam> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingWaterToAirHeatPumpEquationFit> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilCoolingWaterPanelRadiant> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDesuperheater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDXMultiSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDXMultiSpeedStageData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDXSingleSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDXVariableRefrigerantFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingElectric> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingFourPipeBeam> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingGas> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingGasMultiStage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingGasMultiStageStageData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingLowTempRadiantConstFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingLowTempRadiantVarFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDXVariableSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingDXVariableSpeedSpeedData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingWaterToAirHeatPumpEquationFit> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingWaterBaseboard> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilHeatingWaterBaseboardRadiant> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilPerformanceDXCooling> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilSystemCoolingWaterHeatExchangerAssisted> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilSystemCoolingDXHeatExchangerAssisted> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilSystemIntegratedHeatPumpAirSource> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilWaterHeatingAirToWaterHeatPump> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilWaterHeatingAirToWaterHeatPumpVariableSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilWaterHeatingAirToWaterHeatPumpVariableSpeedSpeedData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilWaterHeatingAirToWaterHeatPumpWrapped> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoilWaterHeatingDesuperheater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ComponentCostAdjustments> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ComponentData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Connection> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ConnectorMixer> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ConnectorSplitter> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Construction> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ConstructionAirBoundary> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ConstructionWithInternalSource> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ControllerMechanicalVentilation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ControllerOutdoorAir> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ControllerWaterCoil> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ConvergenceLimits> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoolingTowerPerformanceCoolTools> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoolingTowerPerformanceYorkCalc> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoolingTowerSingleSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoolingTowerTwoSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CoolingTowerVariableSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurrencyType> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveBicubic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveBiquadratic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveCubic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveDoubleExponentialDecay> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveExponent> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveExponentialDecay> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveExponentialSkewNormal> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveFanPressureRise> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveFunctionalPressureDrop> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveLinear> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveQuadLinear> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveQuintLinear> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveQuadratic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveQuadraticLinear> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveQuartic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveRectangularHyperbola1> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveRectangularHyperbola2> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveSigmoid> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<CurveTriquadratic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DaylightingControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DaylightingDeviceShelf> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DaylightingDeviceTubular> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DaylightingDeviceLightWell> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DaylightRedirectionDevice> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DefaultConstructionSet> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DefaultScheduleSet> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DefaultSubSurfaceConstructions> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DefaultSurfaceConstructions> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DesignDay> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DesignSpecificationOutdoorAir> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DesignSpecificationZoneAirDistribution> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DistrictCooling> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<DistrictHeating> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Duct> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricEquipmentITEAirCooled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricEquipmentITEAirCooledDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterDistribution> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterInverterLookUpTable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterInverterSimple> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterInverterPVWatts> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterStorageSimple> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterStorageConverter> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterStorageLiIonNMCBattery> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ElectricLoadCenterTransformer> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemActuator> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemConstructionIndexVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemCurveOrTableIndexVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemGlobalVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemInternalVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemMeteredOutputVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemOutputVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemProgram> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemProgramCallingManager> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemSensor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemSubroutine> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnergyManagementSystemTrendVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EvaporativeCoolerDirectResearchSpecial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EvaporativeCoolerIndirectResearchSpecial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EvaporativeFluidCoolerSingleSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EvaporativeFluidCoolerTwoSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExteriorLights> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExteriorLightsDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExteriorFuelEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExteriorFuelEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExteriorWaterEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExteriorWaterEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceActuator> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitExportFromVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitExportToActuator> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitExportToSchedule> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitExportToVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitImport> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitImportFromVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitImportToActuator> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitImportToSchedule> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceFunctionalMockupUnitImportToVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceSchedule> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalInterfaceVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ExternalFile> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Facility> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FanComponentModel> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FanConstantVolume> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FanOnOff> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FanSystemModel> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FanVariableVolume> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FanZoneExhaust> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FFactorGroundFloorConstruction> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FluidCoolerSingleSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FluidCoolerTwoSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FoundationKiva> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FoundationKivaSettings> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Gas> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GasEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GasEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GasMixture> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCell> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellAirSupply> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellAuxiliaryHeater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellElectricalStorage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellExhaustGasToWaterHeatExchanger> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellInverter> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellPowerModule> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellStackCooler> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelCellWaterSupply> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorFuelSupply> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorMicroTurbine> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorMicroTurbineHeatRecovery> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorPhotovoltaic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorPVWatts> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GeneratorWindTurbine> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GenericModelObject> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GlareSensor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GroundHeatExchangerHorizontalTrench> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<GroundHeatExchangerVertical> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeaderedPumpsConstantSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeaderedPumpsVariableSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatBalanceAlgorithm> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatExchangerAirToAirSensibleAndLatent> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatExchangerDesiccantBalancedFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatExchangerDesiccantBalancedFlowPerformanceDataType1> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatExchangerFluidToFluid> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatPumpWaterToWaterEquationFitCooling> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatPumpWaterToWaterEquationFitHeating> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatPumpPlantLoopEIRCooling> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HeatPumpPlantLoopEIRHeating> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HotWaterEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HotWaterEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HumidifierSteamElectric> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<HumidifierSteamGas> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<IlluminanceMap> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<InfraredTransparentMaterial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<InsideSurfaceConvectionAlgorithm> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<InteriorPartitionSurface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<InteriorPartitionSurfaceGroup> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<InternalMass> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<InternalMassDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LoadProfilePlant> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LifeCycleCost> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LifeCycleCostParameters> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LifeCycleCostUsePriceEscalation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LightingDesignDay> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LightingSimulationControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LightingSimulationZone> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Lights> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LightsDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Luminaire> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<LuminaireDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<MaterialPropertyGlazingSpectralData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<MaterialPropertyMoisturePenetrationDepthSettings> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<MasslessOpaqueMaterial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<MeterCustom> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<MeterCustomDecrement> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ModelObjectList> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Node> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PortList> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OtherEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OtherEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputControlFiles> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputControlReportingTolerances> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputDebuggingData> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputDiagnostics> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputEnergyManagementSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputJSON> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputEnvironmentalImpactFactors> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<EnvironmentalImpactFactors> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<FuelFactors> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputMeter> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputVariable> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutputTableSummaryReports> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<OutsideSurfaceConvectionAlgorithm> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<People> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PeopleDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PerformancePrecisionTradeoffs> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PhotovoltaicPerformanceEquivalentOneDiode> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PhotovoltaicPerformanceSimple> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PhotovoltaicPerformanceSandia> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PipeAdiabatic> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PipeIndoor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PipeOutdoor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantLoop> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantComponentTemperatureSource> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantComponentUserDefined> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationCoolingLoad> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationHeatingLoad> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorDryBulb> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorWetBulb> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorDewpoint> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorRelativeHumidity> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorDryBulbDifference> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorWetBulbDifference> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PlantEquipmentOperationOutdoorDewpointDifference> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ProgramControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PumpConstantSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<PumpVariableSpeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RadianceParameters> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefractionExtinctionGlazing> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationAirChiller> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCase> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCompressor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCompressorRack> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCondenserAirCooled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCondenserCascade> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCondenserEvaporativeCooled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationCondenserWaterCooled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationDefrostCycleParameters> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationGasCoolerAirCooled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationSubcoolerLiquidSuction> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationSubcoolerMechanical> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationSecondarySystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationTranscriticalSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationWalkIn> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RefrigerationWalkInZoneBoundary> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RenderingColor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RoofVegetation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RunPeriod> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RunPeriodControlDaylightSavingTime> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<RunPeriodControlSpecialDays> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleCompact> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleConstant> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleDay> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleFile> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleFixedInterval> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleTypeLimits> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleRule> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleRuleset> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleWeek> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleYear> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ScheduleVariableInterval> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Screen> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerColdest> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerFollowGroundTemperature> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerFollowOutdoorAirTemperature> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerFollowSystemNodeTemperature> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMixedAir> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMultiZoneCoolingAverage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMultiZoneHeatingAverage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMultiZoneHumidityMaximum> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMultiZoneHumidityMinimum> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMultiZoneMaximumHumidityAverage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerMultiZoneMinimumHumidityAverage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerOutdoorAirPretreat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerOutdoorAirReset> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerScheduled> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerScheduledDualSetpoint> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneCooling> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneHeating> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneHumidityMaximum> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneHumidityMinimum> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneOneStageCooling> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneOneStageHeating> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerSingleZoneReheat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerWarmest> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SetpointManagerWarmestTemperatureFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Shade> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ShadingControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ShadingSurface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ShadingSurfaceGroup> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ShadowCalculation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SimpleGlazing> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SimulationControl> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Site> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SiteGroundReflectance> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SiteGroundTemperatureBuildingSurface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SiteGroundTemperatureDeep> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SiteGroundTemperatureShallow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SiteGroundTemperatureFCfactorMethod> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SiteWaterMainsTemperature> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SizingParameters> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SizingPlant> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SizingSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SizingZone> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SkyTemperature> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SolarCollectorFlatPlatePhotovoltaicThermal> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SolarCollectorFlatPlateWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SolarCollectorIntegralCollectorStorage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SolarCollectorPerformanceFlatPlate> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SolarCollectorPerformanceIntegralCollectorStorage> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SolarCollectorPerformancePhotovoltaicThermalSimple> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Space> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SpaceInfiltrationDesignFlowRate> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SpaceInfiltrationEffectiveLeakageArea> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SpaceInfiltrationFlowCoefficient> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SpaceType> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<StandardGlazing> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<StandardOpaqueMaterial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<StandardsInformationConstruction> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<StandardsInformationMaterial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SteamEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SteamEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SubSurface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Surface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SurfaceControlMovableInsulation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SurfacePropertyConvectionCoefficients> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SurfacePropertyConvectionCoefficientsMultipleSurface> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SurfacePropertyExposedFoundationPerimeter> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SurfacePropertyOtherSideCoefficients> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SurfacePropertyOtherSideConditionsModel> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<SwimmingPoolIndoor> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<TableMultiVariableLookup> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<TemperingValve> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ThermalZone> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ThermalStorageChilledWaterStratified> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ThermalStorageIceDetailed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ThermostatSetpointDualSetpoint> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ThermochromicGlazing> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Timestep> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<UtilityBill> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<UnitarySystemPerformanceMultispeed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<Version> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterHeaterMixed> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterHeaterHeatPump> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterHeaterHeatPumpWrappedCondenser> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterHeaterSizing> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterHeaterStratified> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterUseConnections> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterUseEquipment> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WaterUseEquipmentDefinition> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WeatherFile> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WeatherFileConditionType> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WeatherFileDays> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WindowDataFile> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<WindowPropertyFrameAndDivider> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<YearDescription> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneAirContaminantBalance> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneAirHeatBalanceAlgorithm> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneAirMassFlowConservation> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneCapacitanceMultiplierResearchSpecial> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneControlContaminantController> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneControlHumidistat> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneControlThermostatStagedDualSetpoint> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACBaseboardConvectiveElectric> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACBaseboardConvectiveWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACBaseboardRadiantConvectiveElectric> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACBaseboardRadiantConvectiveWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACCoolingPanelRadiantConvectiveWater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACDehumidifierDX> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACEnergyRecoveryVentilator> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACEnergyRecoveryVentilatorController> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACEquipmentList> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACFourPipeFanCoil> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACHighTemperatureRadiant> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACIdealLoadsAirSystem> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACLowTemperatureRadiantElectric> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACLowTempRadiantConstFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACLowTempRadiantVarFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACPackagedTerminalHeatPump> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACPackagedTerminalAirConditioner> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACTerminalUnitVariableRefrigerantFlow> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACUnitHeater> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACUnitVentilator> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneHVACWaterToAirHeatPump> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneMixing> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZonePropertyUserViewFactorsBySurfaceName> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneVentilationDesignFlowRate> : std::true_type {};\n",
      "template <> struct is_concrete_model_mobject<ZoneVentilationWindandStackOpenArea> : std::true_type {};\n"
     ]
    }
   ],
   "source": [
    "for concrete_class in concrete_classes:\n",
    "    print(f\"template <> struct is_concrete_model_mobject<{concrete_class}> : std::true_type {{}};\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6dcbb196",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
